Pyspark Avro 写入错误 SQLConf$LegacyBehaviorPolicy

问题描述 投票:0回答:1

我正在尝试将数据写入 PySpark,但它给了我一个错误:

我的代码是:

spark = pyspark.sql.SparkSession.builder\
    .master("local[*]")\
    .appName("MiAplicacionSpark")\
    .config("spark.jars.packages", "org.apache.spark:spark-avro_2.12:3.5.3,org.apache.hadoop:hadoop-azure:3.2.0,com.microsoft.azure:azure-storage:8.6.0") \
    .getOrCreate()

...

df = spark.read \
    .format("jdbc") \
    .option("url", jdbc_url) \
    .option("dbtable", query) \
    .option("user", username) \
    .option("password", password) \
    .option("fetchsize", "20000") \
    .load()


df.write.format("avro").mode("overwrite").save(file_path + "_magic.avro")

错误是:

java.lang.NoClassDefFoundError:org/apache/spark/sql/internal/SQLConf$LegacyBehaviorPolicy$ 在 org.apache.spark.sql.avro.AvroOutputWriter。(AvroOutputWriter.scala:47) 在 org.apache.spark.sql.avro.AvroOutputWriterFactory.newInstance(AvroOutputWriterFactory.scala:43) 在 org.apache.spark.sql.execution.datasources.SingleDirectoryDataWriter.newOutputWriter(FileFormatDataWriter.scala:161) 在 org.apache.spark.sql.execution.datasources.SingleDirectoryDataWriter。(FileFormatDataWriter.scala:146) 在 org.apache.spark.sql.execution.datasources.FileFormatWriter$.executeTask(FileFormatWriter.scala:389) 在 org.apache.spark.sql.execution.datasources.WriteFilesExec.$anonfun$doExecuteWrite$1(WriteFiles.scala:100)

我的pyspark中的spark版本是3.5.3。

我找不到这个错误可能是什么。

提前致谢

apache-spark pyspark avro
1个回答
0
投票

这是Avro和Spark之间的兼容性问题。从spark.jars.packages中删除org.apache.spark:spark-avro_2.12:3.5.3,因为Spark最新版本中已经包含了它。其次使用最新的 Hadoop-Azure 版本“org.apache.hadoop:hadoop-azure:3.3.4”。刷新您的 Spark 会话,它将解决问题。

© www.soinside.com 2019 - 2024. All rights reserved.