gpt4 book ai didi

apache-spark - Spark Read csv缺少引号

转载 作者:行者123 更新时间:2023-12-04 10:36:46 24 4
gpt4 key购买 nike

Spark 读取

val data = spark.read
.option("delimiter", "\t")
.quote("quote", "\"")
.csv("file:///opt/spark/test1.tsv")

即使存在制表符分隔符,也会错误地解释缺少引号的行
例如行:
"aaa" \t "b'bb \t 222 

被解释为 "aaa", "b`bb 222"代替
"aaa", "b`bb", "222"
根据文档,引号内的 deli-meter 被忽略。
我可以通过重新定义默认报价来解决这个问题,例如: .option("quote","+")但这不是一个好的解决方案

最佳答案

如果引号没有正确关闭,唯一的选择是在创建数据框时保留它,然后使用自定义逻辑删除它。

scala> spark.read.option("delimiter", "\t").option("quote", "").csv("test.csv").show()
+-----+-----+---+
| _c0| _c1|_c2|
+-----+-----+---+
|"aaa"|"b'bb| 22|
+-----+-----+---+

现在,如果您知道哪一列可能有问题,只需应用以下逻辑即可。
scala> df.withColumn("col_without_quotes", regexp_replace($"_c0","\"","")).show()
+-----+-----+---+------------------+
| _c0| _c1|_c2|col_without_quotes|
+-----+-----+---+------------------+
|"aaa"|"b'bb| 22| aaa|
+-----+-----+---+------------------+

关于apache-spark - Spark Read csv缺少引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60141799/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com