aws glue无法读取json snappy文件

zu0ti5jz  于 2021-05-29  发布在  Spark
关注(0)|答案(1)|浏览(573)

我在pyspark中读取数据时遇到问题:
数据从aws firehose(示例数据)发送到s3 bucket,存储为json并使用snappy hadoop压缩。
我可以用spark.read.json()从遗留的spark dataframe中读取数据,但这对使用from\ catalog或from\ options方法的glue dynamic frame(根本不解析架构)不起作用:
spark遗留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
6tdlim6h

6tdlim6h1#

您也可以在粘合作业中使用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 libs中,Parquet文件才支持snappy压缩。

相关问题