微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将csv文件导入hive表;数据包含额外的逗号,因此无法正确导入

如何解决将csv文件导入hive表;数据包含额外的逗号,因此无法正确导入

我在 csv 数据中混合了逗号、单引号和双引号。我最初尝试直接从 csv 文件创建一个 Hive 表并且它工作正常。

但是,客户想要一张可由 Hive 和 Impala 访问的镶木地板。所以我修改一个简单的查询,该查询一个 hive 表构建为一个 3 部分的查询

  1. 创建一个主表
  2. 创建一个永久的配置单元表和
  3. 从表 1 导入到表 2。

现在 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/';

我的插入 sql 查询在这里-

Insert overwrite table ${environment}folder2.sme
select
split(email,")[0] as email
split(email,")[1] as firstname

如果我不使用拆分功能,所有数据都会卡在一个列中。如果我使用拆分函数,它可以正常工作直到前几列,如果数据点采用“我的名字,你好,你好”这种格式,它就会开始中断。 我试过 reg_exp 但不确定它是否与其他地方(如 python)的工作方式相同。 任何建议表示赞赏。 TIA

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?