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

时间:2018-06-16 03:00:47

标签: 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()

2 个答案:

答案 0 :(得分:3)

错误是因为您必须在类路径中同时包含两个库(org.apache.spark.sql.execution.datasources.csv.CSVFileFormatcom.databricks.spark.csv.DefaultSource)。火花让人感到困惑,选择哪一个。

通过将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")

答案 1 :(得分:0)

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