尝试将 CSV 数据读入 Spark-2.2.0 中的数据帧。包含数据的单元格有多行文本,第一行有几个用双引号引起来的单词。下面是使用的代码。尝试了很多选项,但没有任何效果。
df = (sqlContext.read
.format("com.databricks.spark.csv")
.option("header", "true")
.option("inferSchema","true")
.option("multiLine","true")
.option("quoteMode","ALL")
.option("mode","PERMISSIVE")
.option("ignoreLeadingWhiteSpace","true")
.option("ignoreTrailingWhiteSpace","true")
.option("parserLib","UNIVOCITY")
.load("C:/Desktop/testing.csv"))
这是我们试图从文件中读取的数据。第一个单元格包含三行数据。
输入数据:
+----------------------------------------+------------------------+
| text| time|
+----------------------------------------+------------------------+
|#Word #This "are acting though." | 08-11-2016 05:47:00 |
|This is the | |
|Not so. | |
+----------------------------------------+------------------------+
|I'm not sure if I have any left | 08-11-2016 05:48:00 |
+----------------------------------------+------------------------+
|bob day is an honest person | 08-11-2016 05:49:00 |
|"a loss to the senate" | |
+----------------------------------------+------------------------+
作业运行没有错误,但读取的数据不正确。它以下面的方式读取。
输出:
+----------------------------------------+------------------------+
| text| time|
+----------------------------------------+------------------------+
|\#Word #This \"\"are acting though.\"\""| |
+----------------------------------------+------------------------+
|This is the | |
|Not so.\",08-11-2016 05:47:00 | |
+----------------------------------------+------------------------+
|I'm not sure if I have any left | 08-11-2016 05:48:00 |
+----------------------------------------+------------------------+
|\bob day is an honest person | 08-11-2016 05:49:00 |
|\"\"a loss to the senate\"\"\"" | |
+----------------------------------------+------------------------+
由于该行在双引号后被分成两行并且还看到了几个“\”,所以对此感到震惊。时间戳也移动了。
最佳答案
根据这个link ,您应该将 wholeFile
选项设置为 True
以转义 escape
指定的字符之间的换行符。但是,您似乎没有转义包含换行符的文本,因此这可能行不通。您或许应该以引用包含换行符的文本的方式重新格式化源代码。
关于apache-spark - 在读取 csv 时在 Spark-2.2.0 中使用双引号处理多行数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47758446/