1. 程式人生 > >03-表操作1

03-表操作1

個數 處理 關於 記錄 以及 是把 tor 哪些 添加

寫在前面的話:

該系列博文是我學習《 Hive源碼解析與開發實戰》視頻課程的一個筆記,或者說總結,暫時沒有對視頻中的操作去做驗證,只是純粹的學習記錄。

有興趣看該視頻的博友可以留言,我會共享出來,相互交流學習 ^.^。

*********************************************************************************************************

1、Hive數據類型:

   技術分享

      技術分享   

2、Hive文件格式:

  文件類型主要包括:文本文件格式、序列化文件格式、列式文件格式。

  技術分享

    對於列文件格式,它是針對hdfs中的一個block塊的:

    技術分享

    它首先把hdfs上的一個塊劃分成了一個個行組,每一個行組是按照多少行來進行分組的,比如說把100行分為一個行組(row group),然後再對這一個Row Group進行壓縮,壓縮過程如下:

  首先把每一列的數據轉化為行的數據,也就是所有的列都變成行,這樣做是為了方便有時候我們需要某一列的數據,但為了高效,我們不需要把其他列的數據也查詢出來;

  然後把轉化後的行中重復的數據去掉,也就是“壓縮”的由來,這樣可以節省hdfs的存儲空間;    

3、Hive表的創建:

  hive裏面所有的數據都是以表的形式來管理的,所以表是hive的一個基礎,關於表的創建語法如下:

  技術分享

  解釋:

  CREATE :創建表的關鍵字;

  EXTERNAL:是可選的,主要用來區分是內部表還是外部表,內部表和外部表主要是hive表的兩大類;

  TABLE: 關鍵字;

  IF NOT EXISTS:這個是可選的,表示當我創建一個表的時候,如果不存在才創建,已經存在該表了就不創建。

          主要是為了防止在沒有該語句的時候,創建一個已有的表時報錯;

  db_name. :表示數據庫的名字,後面跟一個點,用來接對應表的名字;

  table_name:表的名字;

  col_name date_type :分別為字段名字和類型;

  COMMENT col_comment:字段的描述信息,COMMENT後面接字段描述信息col_comment;

  PARTITIONED BY: 通過哪些字段進行分區,後面接小括號,然後裏面寫相應的字段名和字段類型,如果有描述信息的還可以添加相應字段的描述信息;

  CLUSTERED BY:也就是把一些字段作為key,集合到一塊,(個人理解:對應到mapreduce中最後reduce拿到相應分區數據後的分組操作,相同的key作為一組,

          這裏也就是把這些字段相同值的分為一個組),後面接小括號,裏面寫一些字段名;

  SORTED BY: 後面接小括號,裏面寫相應的字段名,以及標示是正序還是倒序排,表示按照那些字段進行排序排序;

  INTO num_buckets BUCKETS: 表示劃分為多少個桶,個人理解:這個對應到mapreduce的reduce個數;

  ROW FORMAT:設置行的格式,後面接row_format格式,row_format表示某種格式,個人猜測:表示行裏面的字段是以什麽進行分割的,如空格或逗號;

  STORED AS :後面接文件格式,表示以什麽格式進行存儲,這裏的文件格式就是前面講的文本格式、序列化文件格式、列式格式;

  STORED BY:個人猜測,是表示通過自定義的輸入輸出類,進行處理,然後存儲;

  LOCATION hdfs_path:表示把創建的這個表數據存儲在hdfs上的位置;

  TABLEPROPERTIES:後面接小括號,裏面設置屬性名=屬性值;這裏用來設置表的屬性;

  AS select_statement:通過select查詢出一些其他表的結果,然後直接把得到的這些數據放入到創建的這張表裏面去;

  以上就是hive創建表的基本語法解釋。      

  下面列舉一個hive創建表的列子:

  技術分享

  

4、Hive操作表:

  

5、Hive表分區:

6、Hive查詢表:

03-表操作1