使用 pyspark 从 s3 读取/加载 avro 文件

Posted

技术标签:

【中文标题】使用 pyspark 从 s3 读取/加载 avro 文件【英文标题】:Read/Load avro file from s3 using pyspark 【发布时间】:2021-01-05 01:36:51 【问题描述】:

使用 AWS 胶水开发者端点 Spark Version - 2.4 Python Version- 3

代码: df=spark.read.format("avro").load("s3://dataexport/users/prod-users.avro")

尝试读取 avro 文件时收到以下错误消息: 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".;

找到以下链接,但对解决我的问题没有帮助

https://spark.apache.org/docs/latest/sql-data-sources-avro.html[ApacheAvro 数据源指南][1]

Apache Avro as a Built-in Data Source in Apache Spark 2.4

【问题讨论】:

【参考方案1】:

你只需要导入那个包

 org.apache.spark:spark-avro_2.11:4.0.0

查看你需要的版本here

【讨论】:

【参考方案2】:

您是否在启动 shell 时导入了包?如果没有,您需要启动一个shell,如下所示。以下包适用于 spark 2.4+ 版本。

pyspark  --packages com.databricks:spark-avro_2.11:4.0.0

在read.format里面也写如下:

df=spark.read.format("com.databricks.spark.avro").load("s3://dataexport/users/prod-users.avro")

注意:对于 pyspark,您需要编写 'com.databricks.spark.avro' 而不是 'avro'。

【讨论】:

我们通过以下命令ssh -i <dev-endpoint-private-key.pem> glue@<public-address> 访问AWS Developer 实例并且不显式启动shell

以上是关于使用 pyspark 从 s3 读取/加载 avro 文件的主要内容,如果未能解决你的问题,请参考以下文章

使用本地机器从 s3 读取数据 - pyspark

使用 pyspark 从 s3 位置读取镶木地板文件的文件夹到 pyspark 数据帧

使用 PySpark 从 Amazon S3 读取文本文件

使用 pyspark 从 S3 服务器读取时出错:[java.lang.IllegalArgumentException]

使用 pyspark 从 AWS s3 Bucket 读取 csv 时出错

无法使用 Pyspark 2.4.4 读取 s3 存储桶中的镶木地板文件