03-表操作1
寫在前面的話:
該系列博文是我學習《 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