我们有一个文件,其类型如下:
1- Sam, Joshua , "52 DD dr,
Lake Hiawatha" , New Jersey, 07034
2- Ruchi,kumari,SNN Raj serenity,Bengaluru, 560068
在外部表中,第1行被拆分为2行,其余的列在第1行中为空,第2行包含其余的数据。
需要什么是最好的方式加载在一个单一的列来克服这个问题的帮助。在网络上浏览了一些解决方案,但并不清楚。
尝试了以下选项:
1) 使用正则表达式serde
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe'
WITH SERDEPROPERTIES (
"input.regex" = '"*([^"]*)"*,"*([^"]*)"*'
)
但没有成功
2) 来自github的csvinputformathttps://github.com/mvallebr/csvinputformat
但不能使用它。
1条答案
按热度按时间eqqqjvef1#
我试过下面的方法,对我很有效,
1) regex tester-对于这个新行场景,regex非常复杂,而且不起作用。
2) 使用由提供的cvs解析器https://github.com/mvallebr/csvinputformat 还和他聊了聊怎么用。尝试了多种选择,但不起作用。
3) 简单快捷的解决方法是使用shell或perl命令尝试使用遗留方法替换文件中的新行,并且工作顺利。似乎这是一个更加可行和容易的选择。