【问题标题】:Unable load a CSV file as dataframe in spark无法在 Spark 中将 CSV 文件加载为数据框
【发布时间】:2018-12-31 09:09:20
【问题描述】:

我正在尝试在数据框中加载一个 CSV 文件,我的目标是将第一行显示为 CSV 文件的列名。但是在使用下面的代码时,我收到了错误

Exception in thread "main" java.lang.AbstractMethodError
    at scala.collection.TraversableLike$class.filterNot(TraversableLike.scala:278)

代码:

def main(args : Array[String]): Unit = {
 val spark : SparkSession = SparkSession
      .builder()
      .master("local")
      .appName("SparkSessioncsvExample")
      .config("spark.some.config.option", "some-value")
      .getOrCreate()
   val df = spark.read
      .format("csv")
      .option("header", "true") //reading the headers
      .load("D:/Scala/C2ImportCalEventSample.csv")}

但我可以使用代码加载文件:

val df = spark.sparkContext
        .textFile("D:/Scala/C2ImportCalEventSample1.csv")
        //.flatMap(header='true')
        .map(line => line.split(","))
        // .map(line => line.map()
        .toDF()

但在第二个代码文件中被成功加载,但第一行没有作为数据框的 column_name。

spark version is: spark-2.3.2  
scala 2.11.3  
jdk1.8.0_20
sbt-1.2.7

感谢任何可以帮助我的人。

【问题讨论】:

  • 你的第二种方法实际上是加载文本文件..所以你不会得到列名..你能否将示例 csv 粘贴到问题中
  • 你的类路径中也有 scala 2.10 吗?
  • 如何执行应用程序?

标签: apache-spark-sql apache-spark-dataset


【解决方案1】:

java.lang.AbstractMethodError 几乎总是意味着类路径上的库与编译时不同。在这种情况下,我会检查以确保您在类路径中拥有正确版本的 Scala(并且只有一个版本的 scala)。

【讨论】:

  • 谢谢,Harjeet kumar,我的环境变量指向 scala 2.12.8 而我的 sbt 文件是 2.11.3。我已经在 sbt 文件中将我的 env varibale 更改为 2.11.8 版本,它是 2.11.8 版本。它是工作文件。感谢您的帮助。
猜你喜欢
  • 2018-03-08
  • 2015-06-24
  • 2017-10-01
  • 2017-06-03
  • 1970-01-01
  • 2019-11-08
  • 2021-05-23
相关资源
最近更新 更多