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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Hive的列分隔符和行分隔符

發(fā)布時(shí)間:2024/1/17 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Hive的列分隔符和行分隔符 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在創(chuàng)建Hive表時(shí),默認(rèn)行分隔符"^A",列分隔符"\n",這兩項(xiàng)也是可以設(shè)置的。在實(shí)際開發(fā)中,一般默認(rèn)使用默認(rèn)的分隔符,當(dāng)然有些場(chǎng)景下也會(huì)自定義分隔符。

創(chuàng)建表1:

spark-hive use test_db;# 創(chuàng)建外部表 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' # 默認(rèn)分隔符,行分割符:"\n",列分割符:"^A" STORED AS INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat' # 默認(rèn)存儲(chǔ)格式textfile OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' # HDFS存儲(chǔ)目錄 LOCATION'hdfs://namenode.xxx.com:9000/home/test_db/test_tb' TBLPROPERTIES ('transient_lastDdlTime'='1586749208') Time taken: 1.702 s

創(chuàng)建表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

從如上兩個(gè)例子中可以看出:Hive默認(rèn)的列分隔符類型為“org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe”。

Hive中默認(rèn)的列分割符為:"^A"(CTRL+V,CTRL+A),在數(shù)據(jù)文件中為:"1^AJom\n",如果需要自定義分隔符,需要設(shè)置 "ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'",因?yàn)閊A八進(jìn)制編碼為“\001”,如果使用默認(rèn)的分隔符,可以不加此參數(shù)。

Hive中默認(rèn)行分隔符為"\n",也可以通過(guò)"LINES TERMINATED BY '\n' "來(lái)設(shè)置。

一般來(lái)說(shuō)Hive默認(rèn)行分隔符為換行符,如果非要自定義分隔符,可以通過(guò)定義INPUTFORMAT和OUTPUTFORMAT類來(lái)指定特定的(行|列)分隔符。

提示

使用時(shí)需要注意:數(shù)據(jù)中如果包含:"\001","\n"等分隔符,需要提前處理掉。正常在HQL中我們需要REGEXP_REPLACE(字段,'\r|\n|\r\n|\001|\002|\003|\t', '')把常用的分隔符轉(zhuǎn)移掉,免得帶來(lái)串列,斷行的困擾。

?

?

總結(jié)

以上是生活随笔為你收集整理的Hive的列分隔符和行分隔符的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。