将数据帧保存为AVRO Spark 2.4.0

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

从Spark 2.4.0开始,可以在没有外部罐的情况下保存为AVRO。但是我根本无法工作。我的代码看起来像这样:

key = 'filename.avro'
df.write.mode('overwrite').format("avro").save(key)

我收到以下错误:

pyspark.sql.utils.AnalysisException: 'Failed to find data source: avro. Avro is built-in but external data source module since Spark 2.4. Please deploy the application as per the deployment section of "Apache Avro Data Source Guide".;'

所以我看一下Apache Avro数据源指南(https://spark.apache.org/docs/latest/sql-data-sources-avro.html),它给出了以下示例:

df=spark.read.format("avro").load("examples/src/main/resources/users.avro")

df.select("name","favorite_color").write.format("avro").save("namesAndFavColors.avro")

它是一样的,所以我迷路了..任何人都知道出了什么问题?

python apache-spark pyspark avro
2个回答
0
投票

您链接的文档清楚地表明:

spark-avro模块是外置的,默认情况下不包含在spark-submit或spark-shell中。

并进一步说明如何包括该包。

所以你的声明:

从Spark 2.4.0开始,可以在没有外部罐的情况下保存为AVRO。 H

是不正确的。


0
投票

spark-avro模块是外置的,默认情况下不包含在spark-submit或spark-shell中。

与任何Spark应用程序一样,spark-submit用于启动您的应用程序。 spark-avro_2.11及其依赖项可以使用--packages直接添加到spark-submit,例如,

./bin/spark-submit --packages org.apache.spark:spark-avro_2.11:2.4.0 ...

要在spark-shell上进行试验,您还可以使用--packages直接添加org.apache.spark:spark-avro_2.11及其依赖项,

./bin/spark-shell --packages org.apache.spark:spark-avro_2.11:2.4.0 ...

推荐问答