我正在尝试使用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()
答案 0 :(得分:3)
错误是因为您必须在类路径中同时包含两个库(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")
答案 1 :(得分:0)
如果有人在Spark Java中遇到类似的问题,则可能是因为您的类路径中有多个版本的spark-sql jar。仅供参考。