在 hive 的一列中加载具有“(双引号)的管道分隔 CSV 数据

Posted

技术标签:

【中文标题】在 hive 的一列中加载具有“(双引号)的管道分隔 CSV 数据【英文标题】:Load pipe delimited CSV data having " (double quote) in one of the column in hive 【发布时间】:2020-08-17 12:34:55 【问题描述】:

我的数据如下:-

Rollno|Name|height|department
101|Aman|5"2|C.S.E

将所有列作为字符串。 当我在配置单元中加载上述数据时,我在开始和结束时得到额外的报价,如下所示: - 罗尔诺:-“101 名称:-阿曼 高度:-5"2 部门:-C.S.E" 谁能帮我解决一下。

【问题讨论】:

【参考方案1】:

指定您的分隔符,例如:

val df = spark.read.option("header","true").option("inferSchema","true").option("sep", "|").csv("test.csv")
df.show(false)

+------+----+------+----------+
|Rollno|Name|height|department|
+------+----+------+----------+
|101   |Aman|5"2   |C.S.E     |
+------+----+------+----------+

【讨论】:

这不能在 HQL 中使用 csvserde 处理吗?? 然后,拆分并从数组中获取。但是您的 csv 加载已经搞砸了,报价没有很好地转义。所以,它在某种程度上被破坏了。 感谢@Lamanua!是的,您分享的方式我能够正确读取数据,但是当我将此数据框保存到另一个 hdfs 位置时,具有引号本身的列高将保存为“5”2 “。我该如何处理这个问题,以便引号被转义,并且只有 5”2 被写入其他 hdfs 位置。 当我再次将此 df 写入 csv 时,它会使用转义符保存 \ df.write.option("header","true").csv("test")

以上是关于在 hive 的一列中加载具有“(双引号)的管道分隔 CSV 数据的主要内容,如果未能解决你的问题,请参考以下文章

在 hive 中加载数据时的问题

在 HIve 中加载比实际更多的记录

无法以正确的形式在 Hive 表中加载数据

如何在红移光谱表中加载正确的数据?

Bigquery - 在一列中加载带有“#N/A”的 CSV

在 AppDomain 问题中加载具有依赖项的程序集