Scala Spark在CSV中读取文本中的换行符时创建新行
所以,这个问题已经被讨论了很多,但是它应该在刚刚发布的Spark 2.2.0中修复。据我所知,Scala Spark在CSV中读取文本中的换行符时创建新行,scala,csv,apache-spark,Scala,Csv,Apache Spark,所以,这个问题已经被讨论了很多,但是它应该在刚刚发布的Spark 2.2.0中修复。据我所知,wholeLine选项应该可以解决这个问题,但是我没有运气。问题是,当一个值中有一个换行符时,比如一个notes列中有一堆文本,而这些notes中有一个换行符,Spark会将其视为一个新行 下面是我用来从CSV读取数据的代码段 sparkSession.read .option("header", "true") .option("delimiter", ",") .option("mult
wholeLine
选项应该可以解决这个问题,但是我没有运气。问题是,当一个值中有一个换行符时,比如一个notes列中有一堆文本,而这些notes中有一个换行符,Spark会将其视为一个新行
下面是我用来从CSV读取数据的代码段
sparkSession.read
.option("header", "true")
.option("delimiter", ",")
.option("multiLine", "true")
.option("inferSchema", true)
.option("wholeFile", "true")
.option("quoteMode", "ALL")
.option("parserLib", "univocity")
.csv(csvFilePath)
正如你所知道的,我使用了所有的选项,但是我仍然得到了错误的输出。我得到的输出如下,这些都应该是唯一的整数,但是它们被来自其他列、另一行的数据污染了。我对数据做了一些更改,但是您可以看到,在ID为的列中有字符串数据
+--------------------+
| ID|
+--------------------+
| 3876849|
| 3876872|
| consistent|
| 4/30|
|,blah blah blah ...|
| 3876876|
| 3876878|
| 5-6 days ago"|
| 3876879|
| 3876880|
|blah blah blah bl...|
| 3876893|
|*blah blah blah ...|
| 3876900|
| 3876904|
+--------------------+
这真的让我很难堪,我还包括了build.sbt
name := "MyApp"
organization := "com.test"
version := "1.0-SNAPSHOT"
scalaVersion := "2.11.8"
libraryDependencies ++= Seq(
"org.apache.spark" % "spark-core_2.11" % "2.2.0" % "provided",
"org.apache.spark" % "spark-sql_2.11" % "2.2.0" % "provided",
"org.apache.spark" % "spark-hive_2.11" % "2.2.0" % "provided",
"org.elasticsearch" % "elasticsearch-spark-20_2.11" % "5.5.0",
"org.apache.logging.log4j" % "log4j-core" %"2.8.2"
)
assemblyMergeStrategy in assembly := {
case PathList("META-INF", xs @ _*) => MergeStrategy.discard
case x => MergeStrategy.first
}
assemblyOption in assembly := (assemblyOption in assembly).value.copy(includeScala = false)
那么…你想解决的问题是什么?你能显示不符合你要求的输出吗?啊,是的,忘了提了。你也能显示输入吗?