在 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 数据的主要内容,如果未能解决你的问题,请参考以下文章