【问题标题】:Apache Spark 2.0 (PySpark) - DataFrame Error Multiple sources found for csvApache Spark 2.0 (PySpark) - DataFrame 错误为 csv 找到多个来源
【发布时间】:2019-08-22 16:15:06
【问题描述】:

我正在尝试使用 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()

【问题讨论】:

    标签: apache-spark pyspark pyspark-sql


    【解决方案1】:

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

    您所需要的只是告诉 spark 使用 com.databricks.spark.csv.DefaultSource,方法是将 format 选项定义为

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

    另一种选择是使用load

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

    【讨论】:

    • 感谢 Ramesh.. 但即使在添加了您建议的行后也遇到了同样的错误
    • 它有效。谢谢 Ramesh.. 但有什么区别?
    • 我在 'org.apache.spark.sql.execution.datasources.v2.csv.CSVDataSourceV2' 和 'org.apache.spark.sql.execution.datasources.csv.CSVFileFormat' 之间遇到了类似的错误.将其中之一添加到 .format 没有任何区别。 .format("org.apache.spark.sql.execution.datasources.csv")
    【解决方案2】:

    如果有人在 Spark Java 中遇到类似问题,可能是因为您的类路径中有多个版本的 spark-sql jar。仅供参考。

    【讨论】:

    • 我怎么知道?我有“为 json 找到多个来源”
    • 我正在使用 spark 3 并将旧代码迁移到 spark 3。我收到错误:pyspark.sql.utils.AnalysisException: Multiple sources found for json (org.apache.spark.sql.execution .datasources.v2.json.JsonDataSourceV2, org.apache.spark.sql.execution.datasources.json.JsonFileFormat),请指定全限定类名。;
    猜你喜欢
    • 2021-04-09
    • 1970-01-01
    • 2021-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多