ApacheSpark 2.0(PySpark)-找到CSV的多个源时出现DataFrame错误

inb24sb2  于 2022-10-07  发布在  Apache
关注(0)|答案(3)|浏览(260)

我正在尝试使用Spark 2.0中的以下代码创建 Dataframe 。在Jupyter/Console中执行代码时,我面临以下错误。有谁能帮我排除这个错误吗?

错误:

Py4JJava错误:调用o34.csv时出错。:java.lang.Rty异常:为csv(org.apache.spark.sql.execution.datasources.csv.CSVFileFormat,找到多个源),请指定完全限定的类名。在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()
sd2nnvve

sd2nnvve1#

错误是因为您的类路径中必须同时包含两个库(org.apache.spark.sql.execution.datasources.csv.CSVFileFormatcom.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")
fcipmucu

fcipmucu2#

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

k4ymrczo

k4ymrczo3#

我曾经遇到过同样的问题,当我将pom.xml中使用的Hudi版本从9.0更改为11.1时,我得到了修复

相关问题