导入数据到hive的字段含有转义符问题

导入数据到hive的字段含有转义符问题

清泓
2022-06-20 / 0 评论 / 2,562 阅读 / 863字 / 正在检测是否收录...

问题

  从mysql中抽取数据到hive中发现数据错乱了,mysql中的两百条数据抽到hive中变成了九千多条。初步怀疑是建表时的分割符问题,更换行分隔符和列分割符都无法解决问题。后面查看mysql中数据,发现有个字段中包含大量换行符、制表符、回车等,问题找到了,开始解决

解决

  Hive数据处理中去除字段中的换行符、分割符需要使用regexp_replace()函数

具体使用方式如下:

regexp_replace(字段,需要替换的符号,替换符号)

举例:

mysql数据:
test表中字段field_B中含有换行符等符号,需要在抽取时进行处理

field_Afield_Bfield_C
aaa\t\n\001\bxxxaaa
bbb\t\n\001\bxxxbbb
ccc\t\n\001\bxxxbbb

hive建表语句:

create table if not exists test(
field_A      string,
field_B      string,
field_C      string)
partitioned by (date timestamp)
row format delimited fields terminated by ',';

抽取语句:

insert overwrite table partition (date = current_date())
select 
field_A,
regexp_replace(field_B,'\\n|\\t|\\r',''),
field_C
from test
0

打赏

评论

博主关闭了当前页面的评论