Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 读取csv时在Spark-2.2.0中使用双引号处理多行数据_Apache Spark_Pyspark_Pyspark Sql - Fatal编程技术网

Apache spark 读取csv时在Spark-2.2.0中使用双引号处理多行数据

Apache spark 读取csv时在Spark-2.2.0中使用双引号处理多行数据,apache-spark,pyspark,pyspark-sql,Apache Spark,Pyspark,Pyspark Sql,正在尝试将CSV数据读入Spark-2.2.0中的数据帧。包含数据的单元格有多行文本,第一行有几个字,用双引号括起来。下面是使用的代码。尝试了许多选择,但没有真正起作用 df = (sqlContext.read .format("com.databricks.spark.csv") .option("header", "true") .option("inferSchema","true") .option("multiLine","true") .option("quoteMode","AL

正在尝试将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\"\"\""         |                        |
+----------------------------------------+------------------------+

当该行在双引号后被分为两行时,使用此符号,并且还可以看到很少的“\”。时间戳也被移动。

根据此,您应该将
wholeFile
选项设置为
True
,以转义
转义所指定字符之间的换行符。但是,看起来您没有跳过包含换行符的文本,因此这可能不起作用。您可能应该重新格式化源代码,使包含换行符的文本被引用。

您能给出一个示例数据吗。我无法复制同样的问题。我尝试在单元格中插入新行,当multiline为True时,它对我有效。据我所知,“\”可能是这里的问题。@mayangagrawal是的,额外的“\”正在添加到输出数据中。输入只有双引号。我认为将参数“escape”设置为与默认值“\”不同的值可能会起作用。我遇到了类似的问题,并找到了解决方案,感谢@ags29添加(“escape”,“n”)和(“wholeFile”,“True”)在一定程度上解决了问题。第三张唱片现在正合适地出现。像第一个这样的记录仍然存在问题。