Scala Spark 处理带逗号的单引号字符

Posted

技术标签:

【中文标题】Scala Spark 处理带逗号的单引号字符【英文标题】:Scala Spark Handle Single Quote Characters With Commas 【发布时间】:2020-09-03 12:48:26 【问题描述】:

我正在使用 scala 在 Spark 中读取 CSV,它在下面的示例中正确处理第一行,但在示例的第二行中,该行有一个结束引号字符,但第一列没有前导引号字符。这会通过移动数据并在最终结果中输出bad|col 导致问题,这是不正确的。

"good,col","good,col"
bad,col","good,col"

在使用 scala 在 spark 中读取文件时,是否有一个选项可以处理选项规范中没有前导(或结尾)引号的引号字符?

【问题讨论】:

【参考方案1】:

嗯...通过使用rdd和一些替换,我可以获得你想要的。

val df = rdd.map(r => (r.replaceAll("\",\"", "|").replaceAll("\"", "").split("\\|"))).map case Array(a, b) => (a, b) .toDF("col1", "col2")
df.show()

+--------+--------+
|    col1|    col2|
+--------+--------+
|good,col|good,col|
| bad,col|good,col|
+--------+--------+

【讨论】:

以上是关于Scala Spark 处理带逗号的单引号字符的主要内容,如果未能解决你的问题,请参考以下文章

Java Regex:查找带转义的单引号文本

oracle 用逗号分割一个带引号的字符串

Liquibase CSV loadData 失败,带引号的字符串包含逗号

如何在 Spark Scala 数据框中拆分逗号分隔的字符串并获取 n 个值?

如何将字符串中带有双引号的json文件加载到spark scala中的数据框中

shell脚本中反引号与双引号的·区别与联系