使用 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 文件的主要内容,如果未能解决你的问题,请参考以下文章
使用 pyspark 从 s3 位置读取镶木地板文件的文件夹到 pyspark 数据帧
使用 pyspark 从 S3 服务器读取时出错:[java.lang.IllegalArgumentException]