记忆角落

  • {{ item.name }}
  • 首页
  • 关于
  • 归档
  • 邻居
  • 捐赠

Hive踩过的坑-hive多个分隔符的问题

  • 郭良俊只狗
  • 2019-06-05
  • 7

今天就说说hive多个分隔符的问题。

多分隔符(列)这个问题,也是之前同事给我一份文件我才发现的...

这份文件上列分隔符是@#|

hive建表时,ROW FORMAT DELIMITED FIELDS TERMINATED BY '@#|' 直接用@#|,发现输出的字段和文件不一致。

CREATE EXTERNAL TABLE IF NOT EXISTS hjx_temp_ua_190605
(
id String,ua_cut String,user_num String,ua String
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '@#|'
LINES TERMINATED BY '\n'
location '/user/jfa5d/hjx_temp/ua_temp/';

查了资料,hive创建表指定分隔符时,不支持多个字符作为分隔符(只支持单个)。

Hive多分隔符支持

Hive在0.14及以后版本支持字段的多分隔符,参考https://cwiki.apache.org/confluence/display/Hive/MultiDelimitSerDe

CREATE EXTERNAL TABLE IF NOT EXISTS hjx_temp_ua_1906052
(
id String,ua_cut String,user_num String,ua String
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.MultiDelimitSerDe' WITH SERDEPROPERTIES ("field.delim"="@#|")
stored as textfile location '/user/jfa5d/hjx_temp/ua_temp2/';

关键语句为:

ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.MultiDelimitSerDe' WITH SERDEPROPERTIES ("field.delim"="@#|")
stored as textfile location '/user/jfa5d/hjx_temp/ua_temp2/';


好了,菜鸡埋坑结束..

© 2012 - 2023 记忆角落 网站统计
Theme by Wing
粤ICP备14056850号-1 又拍云CDN赞助