【发布时间】:2016-09-25 09:40:31
【问题描述】:
我从上游获取数据作为 csv 文件并在其上创建 Hive 表。现在一些 csv 文件在几行/列中包含控制 M 字符。例如3列数据如下所示,带有控制M字符
abc^M,def,ghi
jkl,mno^M,pqr
现在我使用 LOAD DATA INPATH '/path/to/file' INTO TABLE mytable 将数据加载到 Hive 表中,因为上面的数据包含控制 M Hive 将其视为换行符并将该行换成新行,因此 Hive 表中的上述数据返回 4 行计数而不是 2。
我尝试使用regex_replace(mycol,'[\x01-\x1A]',"\\") 将包括控制 M 在内的所有控制字符替换为 \ 并且它可以工作,但它会留下 \ 符号,例如abc^M 将变为 abc\ 我不想更改数据有没有更好的方法来做到这一点?在这种情况下,我不确定即使是自定义 serde 也会有所帮助。我是 Hive 的新手。
【问题讨论】:
-
为什么不使用
regex_replace(mycol,'[\x01-\x1A]','')
标签: hive