自Spark 2.4.0起,可以在没有外部jar的情况下另存为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")
是一样的,所以我迷路了。任何人都知道出了什么问题吗?
答案 0 :(得分:0)
您链接的文档明确指出:
spark-avro模块是外部模块,默认情况下不包含在spark-submit或spark-shell中。
并进一步说明如何包含该软件包。
您的声明:
自Spark 2.4.0起,可以在没有外部jar的情况下另存为AVRO。高
只是不正确。
答案 1 :(得分:0)
spark-avro模块是外部模块,默认情况下不包含在spark-submit或spark-shell中。
与任何Spark应用程序一样,spark-submit用于启动您的应用程序。 spark-avro_2.11及其依赖项可以使用--packages
(例如,
./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 ...