如何解决将csv文件导入hive表;数据包含额外的逗号,因此无法正确导入
我在 csv 数据中混合了逗号、单引号和双引号。我最初尝试直接从 csv 文件创建一个 Hive 表并且它工作正常。
但是,客户想要一张可由 Hive 和 Impala 访问的镶木地板。所以我修改了一个简单的查询,该查询将一个 hive 表构建为一个 3 部分的查询,
现在 csv 文件本身已导入到 Hive 环境中。我尝试了两种方法来做到这一点
#1 使用文本到列来拆分所有列和
#2 没有文本到列,而是直接导入。
#1 的问题是有一个额外的手动步骤。 #2 方法的问题是所有文本现在都显示在 1 列中,这是可以的。但是当我使用 3 部分查询来导入它时,数据在最终表中没有对齐。表1中的示例记录如下所示-
samplefirstname.samplelastname@sampleclient.com,"FirstName","LastName","Xyz,Abcd; damage Claim T20212020","Hdgsd,Fashs; damage Claim T20212020","","EMAILINCAPS@domaininlowcase.com","10/10/1600 4:04:22 PM","10/10/1600 12:00:00 AM","Accepted","11/11/1600 6:22:48 AM","14428","SOMENAME"
Create External Table If Not Exists ${environment}folder.sample_table(
email1 string,firstName string,lastName string,matter string,holdname string,id1 string,email2 string,email3 string,date1 string,date2 string,response string,date3 string,id2 string,Account string
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
WITH SERDEPROPERTIES ('separatorChar' = ",",'quoteChar'= "\"",'escapeChar' = "\\")
STORED AS TEXTFILE
LOCATION '/${directory}/loc1/loc2/loc3/';
Insert overwrite table ${environment}folder2.sme
select
split(email,")[0] as email
split(email,")[1] as firstname
如果我不使用拆分功能,所有数据都会卡在一个列中。如果我使用拆分函数,它可以正常工作直到前几列,如果数据点采用“我的名字,你好,你好”这种格式,它就会开始中断。 我试过 reg_exp 但不确定它是否与其他地方(如 python)的工作方式相同。 任何建议表示赞赏。 TIA
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。