Hive建表时多字符分割

一般hive建表的时候都会根据数据的分隔符进行建表,表的分隔符分三种

1,默认分隔符

\n行分隔符
^A字段分隔符,八进制表示为\001, 
^Barray或struct中为元素分隔符,map中为key-value分隔符\002
^Cmap中为key和value间的分隔符\003

默认分割符一般是在建表是指定的,^A为\001,^B为\002,^C为\003,不同的数据格式不同的分隔符,在vim中\001是先按Ctrl+v再按Ctrl+a,\002先按Ctrl+v再按Ctrl+b,以此类推

2,指定单个特殊符号做为分隔符

create external table an_dimension_area(
area_id string,
county_name string,
city_id string,
city_name string,
province_id string,
province_name string
)
row format delimited
fields terminated by ','
STORED AS TEXTFILE;

上述为用","做为字段间的分割,或者字段间以\t为分割,行之间用\n分割,自己根据自己需要随意指定

ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'LINES TERMINATED BY '\n'

3,使用多字符作为分割符

     我们的数据是以@@@分割,所以用上面的分割符都不能满足,

  ①使用MultiDelimitSerDe的方法来实现

 ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.MultiDelimitSerDe' WITH SERDEPROPERTIES ("field.delim"="@@@") LINES TERMINATED BY '\n'STORED AS TEXTFILE;
row format SERDE 'org.apache.hadoop.hive.contrib.serde2.MultiDelimitSerDe' WITH SERDEPROPERTIES ("field.delim"="@@@")

②使用RegexSerDe的方法实现

ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe' WITH SERDEPROPERTIES ("input.regex" = "^(.*)\\@\\@\\@(.*)$") LINES TERMINATED BY '\n'STORED AS TEXTFILE;

 

参考:https://blog.csdn.net/u013150378/article/details/90766209

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值