python - AWS Glue 无法读取 JSON Snappy 文件
问题描述
我在 PySpark 中使用 AWS Glue 作业读取数据时遇到问题:
数据从 AWS firehose(示例数据)发送到 s3 存储桶,存储为 JSON 并使用 snappy-hadoop 压缩。
我可以使用 spark.read.json() 从旧版 Spark 数据帧中读取数据,但这不适用于使用from_catalog或from_options方法的 Glue 动态帧(根本不解析模式) :
Spark Legacy DataFrame
# import from legacy spark read
spark_df = spark.read.json("s3://my-bucket/sample-json-hadoop-snappy/")
spark_df.printSchema()
- result:
root
|-- change: double (nullable = true)
|-- price: double (nullable = true)
|-- sector: string (nullable = true)
|-- ticker_symbol: string (nullable = true)
|-- year: integer (nullable = true)
|-- dt: date (nullable = true)
粘合动态框架
# import from glue options
options_df = glueContext.create_dynamic_frame.from_options(
connection_type="s3",
connection_options = {"paths": ["s3://my-bucket/sample-json-hadoop-snappy/"]},
format="json"
)
options_df.printSchema()
- result:
root
解决方案
您也可以在胶水作业中使用 spark legacy,如果您只想对胶水库执行操作,然后使用 spark 读取,然后将 df 转换为动态帧。
df = spark.read.json("s3://my-bucket/sample-json-hadoop-snappy/")
from awsglue.dynamicframe import DynamicFrame
DynF = DynamicFrame.fromDF(df, glueContext, "df")
目前,仅 Glue 库中的 parquet 文件支持 snappy 压缩。
推荐阅读
- html - 嵌套子项的最大高度为 100%
- charts - 蜡烛制作过程中的 PineScript 变量间歇值
- postgresql - 运行安装后步骤时出现问题。安装可能无法正确完成 数据库集群初始化失败
- java - java在哪里。java.lang 和 java.util 等包在哪里?
- android-studio - 为什么请求 http 在 Kotlin 中不起作用?
- java - 如何解决“原始使用参数化类'Comparable'”警告?
- python - Python 变量的值不会在函数之外更改
- go - 分配 C 内存来保存 Go 结构是 cgo 支持的用例吗?
- javascript - 尝试将字符串传递给构造函数
- common-lisp - uiop:launch-program 和 nodejs