【问题标题】:Save dataframe as AVRO Spark 2.4.0将数据帧另存为 AVRO Spark 2.4.0
【发布时间】:2019-04-29 09:08:48
【问题描述】:

从 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")

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

【问题讨论】:

    标签: python apache-spark pyspark avro


    【解决方案1】:

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

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

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

    所以你的陈述:

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

    只是不正确。

    【讨论】:

      【解决方案2】:

      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 ...
      

      【讨论】:

        【解决方案3】:

        您可以使用此行以avro格式保存

         df2.write.format("avro").save(file_location + "file_name.avro")
        

        【讨论】:

          猜你喜欢
          • 2018-09-01
          • 2023-03-22
          • 1970-01-01
          • 1970-01-01
          • 2017-11-10
          • 1970-01-01
          • 2016-09-27
          • 2019-01-16
          • 2020-07-24
          相关资源
          最近更新 更多