Apache Spark 2.0 (PySpark) - 为 csv 找到多个数据帧错误源

Ang*_*Sen 2 apache-spark pyspark pyspark-sql

我正在尝试使用 Spark 2.0 中的以下代码创建数据帧。在 Jupyter/Console 中执行代码时,我面临以下错误。有人可以帮助我如何摆脱这个错误吗?

错误:

Py4JJavaError:调用 o34.csv 时发生错误。: java.lang.RuntimeException: 为 csv 找到多个源(org.apache.spark.sql.execution.datasources.csv.CSVFileFormat, com.databricks.spark.csv.DefaultSource15),请指定完全限定的类名。在 scala.sys.package$.error(package.scala:27​​)

代码:

   from pyspark.sql import SparkSession
   if __name__ == "__main__":
      session = SparkSession.builder.master('local')
                     .appName("RealEstateSurvey").getOrCreate()
      df = session \
           .read \
           .option("inferSchema", value = True) \
           .option('header','true') \
           .csv("/home/senthiljdpm/RealEstate.csv")

     print("=== Print out schema ===")
     session.stop()
Run Code Online (Sandbox Code Playgroud)

Ram*_*jan 5

错误是因为您的类路径中必须同时具有库 (org.apache.spark.sql.execution.datasources.csv.CSVFileFormatcom.databricks.spark.csv.DefaultSource)。火花很困惑选择哪一个。

您只需要com.databricks.spark.csv.DefaultSource通过将format选项定义为告诉 spark 使用

  df = session \
       .read \
       .format("com.databricks.spark.csv") \
       .option("inferSchema", value = True) \
       .option('header','true') \
       .csv("/home/senthiljdpm/RealEstate.csv")
Run Code Online (Sandbox Code Playgroud)

另一种选择是load用作

  df = session \
       .read \
       .format("com.databricks.spark.csv") \
       .option("inferSchema", value = True) \
       .option('header','true') \
       .load("/home/senthiljdpm/RealEstate.csv")
Run Code Online (Sandbox Code Playgroud)