代码之家  ›  专栏  ›  技术社区  ›  AngiSen

apache spark 2.0(pyspark)-找到csv的多个数据帧错误源

  •  0
  • AngiSen  · 技术社区  · 6 年前

    我正在尝试使用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()
    
    1 回复  |  直到 6 年前
        1
  •  3
  •   Ramesh Maharjan    6 年前

    错误是因为您必须同时拥有两个库( org.apache.spark.sql.execution.datasources.csv.CSVFileFormat com.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")
    
        2
  •  0
  •   rockyroad    5 年前

    如果有人在Spple Java中遇到类似的问题,那可能是因为在类路径中有多个版本的SqsSQLjar。只是FIY。