Hive的列分隔符和行分隔符
生活随笔
收集整理的這篇文章主要介紹了
Hive的列分隔符和行分隔符
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在創建Hive表時,默認行分隔符"^A",列分隔符"\n",這兩項也是可以設置的。在實際開發中,一般默認使用默認的分隔符,當然有些場景下也會自定義分隔符。
創建表1:
spark-hive use test_db;# 創建外部表 CREATE EXTERNAL TABLE test_tb ( user_id bigint COMMENT '用戶ID', user_name string COMMENT '用戶名' ) LOCATION '/home/test_db/test_tb' ;查看表1:
show create table test_tb; 20/04/13 11:47:49 INFO SparkHiveShell: current SQL: show create table test_tb CREATE EXTERNAL TABLE `test_tb`(`user_id` bigint COMMENT '用戶ID',`user_name` string COMMENT '用戶名') ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe' # 默認分隔符,行分割符:"\n",列分割符:"^A" STORED AS INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat' # 默認存儲格式textfile OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' # HDFS存儲目錄 LOCATION'hdfs://namenode.xxx.com:9000/home/test_db/test_tb' TBLPROPERTIES ('transient_lastDdlTime'='1586749208') Time taken: 1.702 s創建表2:
CREATE EXTERNAL TABLE test_tb_2 ( user_id bigint COMMENT '用戶ID', user_name string COMMENT '用戶名' ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n' LOCATION '/home/test_db/test_tb_2' ;查看表2:
show create table test_tb_2; 20/04/13 11:55:22 INFO SparkHiveShell: current SQL: show create table test_tb_2 CREATE EXTERNAL TABLE `test_tb_2`(`user_id` bigint COMMENT '用戶ID', `user_name` string COMMENT '用戶名') ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' # 列分割符,表2的列分割符為:"\t"LINES TERMINATED BY '\n' # 行分割符,表2的行分隔符為:"\n" STORED AS INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat' OUTPUTFORMAT'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' LOCATION'hdfs://namenode.xxx.com:9000/home/test_db/test_tb_2' TBLPROPERTIES ('transient_lastDdlTime'='1586749805') Time taken: 2.485 s從如上兩個例子中可以看出:Hive默認的列分隔符類型為“org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe”。
Hive中默認的列分割符為:"^A"(CTRL+V,CTRL+A),在數據文件中為:"1^AJom\n",如果需要自定義分隔符,需要設置 "ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'",因為^A八進制編碼為“\001”,如果使用默認的分隔符,可以不加此參數。
Hive中默認行分隔符為"\n",也可以通過"LINES TERMINATED BY '\n' "來設置。
一般來說Hive默認行分隔符為換行符,如果非要自定義分隔符,可以通過定義INPUTFORMAT和OUTPUTFORMAT類來指定特定的(行|列)分隔符。
提示
使用時需要注意:數據中如果包含:"\001","\n"等分隔符,需要提前處理掉。正常在HQL中我們需要REGEXP_REPLACE(字段,'\r|\n|\r\n|\001|\002|\003|\t', '')把常用的分隔符轉移掉,免得帶來串列,斷行的困擾。
?
?
總結
以上是生活随笔為你收集整理的Hive的列分隔符和行分隔符的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Druid 分析报表中的实战(二)
- 下一篇: Go语言 可变参数