hive 數據表及常用操作


一、數據類型

數據類型 所占字節
TINYINT 1byte,-128 ~ 127
SMALLINT 2byte,-32,768 ~ 32,767
INT 4byte,-2,147,483,648 ~ 2,147,483,647
BIGINT 8byte,-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
BOOLEAN  
FLOAT 4byte單精度
DOUBLE 8byte雙精度
STRING  
BINARY Hive0.8.0
TIMESTAMP Hive0.8.0
DECIMAL Hive0.11.0
CHAR Hive0.13.0
VARCHAR Hive0.12.0
DATE Hive0.12.0

二、分隔符

Hive默認的分隔符。

分隔符 描述
\n 換行符,默認行分隔符
^A(Ctrl+A) 文本中以八進制\001表示,列分隔符
^B(Ctrl+B) 在文本中以八進制\002表示,作為分隔Array、Struct中的元素,或者Map中鍵值對的分隔
^C(Ctrl+C) 在文本中以八進制\003表示,用於MAP中鍵值對的分隔

三、文件存儲格式

TEXTFILE :即通常說的文本格式,默認長期,數據不做壓縮,磁盤開銷大、數據解析開銷大。 
SEQUENCEFILE :Hadoop提供的一種二進制格式,使用方便、可分割、可壓縮,並且按行進行切分 。
RCFILE :一種行列存儲相結合的存儲方式,首先,其將數據按行分塊,保證同一條記錄在一個塊上,避免讀一條記錄多個塊。其次,塊上的數據按照列式存儲,有利於數據壓縮和快速地進行列存取。 
自定義文件格式 :用戶通過實現InputFormat和OutputFormat來自定義輸入輸出格式。

四、建表

Create [EXTERNAL] TABLE [IF NOT EXISTS] table_name
 
[(col_name data_type [COMMENT col_comment], ...)]
 
[COMMENTtable_comment]
 
[PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)]
 
[CLUSTERED BY (col_name,col_name, ...) [SORTED BY (col_name[SCC|DESC], ...)] INTO num_buckets BUCKETS]
 
[ROW FORMAT row_format]
 
[STORED AS file_format]
 
[LOCATION hdfs_path]
CREATE TABLE tablename(
id int,
name string
)
PARTITIONED BY(dt string)  --分區鍵和字段不能重復
--自定義分隔符 
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\001'     --字段分隔符
COLLECTION ITEMS TERMINATED BY '\002'   --數組分隔符 結構體分隔符
MAP KEYS TERMINATED BY '\003'   --map分隔符
LINES TERMINATED BY '\n'   --行分隔符
STORED AS TEXTFILE;

 

五、加載數據

LOAD DATA LOCAL INPATH 'file_path'
OVERWRITE  INTO TABLE tablename;

有LOCAL表示從本地文件系統加載(文件會被拷貝到HDFS中)

無LOCAL表示從HDFS中加載數據(注意:文件直接被移動!!!)

OVERWRITE  表示是否覆蓋表中數據(或指定分區的數據)(沒有OVERWRITE  會直接APPEND,而不會濾重!)

六、空值判斷

hive底層通過 alter table name SET SERDEPROPERTIES('serialization.null.format' = '\N'); 參數控制NULL的標識。

若設置為'\N',則底層保存為'\N'而顯示的是NULL,此時查詢空值的語句為: a is null 或者 a='\\N';同理,若設置為'NULL',則查詢空值的語句為:a is null 或者 a='NULL'。

查詢''空字符串,但字段不為null,需要通過語句:a=''  或者 length(a)=0 。

 

 

 

參考鏈接:

https://blog.csdn.net/xundh/article/details/71404376    Hive 數據類型和存儲格式、建表操作

https://www.cnblogs.com/tugeler/p/5133019.html    Hive - 建表和加載數據指令小結 以及使用Load data指令的注意事項

https://blog.csdn.net/jyl1798/article/details/41871013    hive 空值、NULL判斷

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM