日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Hive的列分隔符和行分隔符

發布時間:2024/1/17 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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的列分隔符和行分隔符的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。