一、數據類型
數據類型 | 所占字節 |
---|---|
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判斷