【问题标题】:AWS Glue - GlueContext: read partitioned data from S3, add partitions as columns of DynamicFrameAWS Glue - GlueContext:从 S3 读取分区数据,将分区添加为 DynamicFrame 的列
【发布时间】:2020-02-26 11:50:54
【问题描述】:

我有一些数据以 parquet 格式存储在 S3 存储桶中,采用类似配置单元的分区样式,具有以下分区键:零售商 - 年 - 月 - 日。

例如

my-bucket/
   retailer=a/
         year=2020/
         ....
   retailer=b/
         year=2020/
            month=2/
         ...

我想在 sagemaker 笔记本中读取所有这些数据,并且我希望将分区作为我的 DynamicFrame 的列,这样当我 df.printSchema() 时,它们就会被包含在内。

如果我使用 Glue 建议的方法,分区不会包含在我的架构中。这是我正在使用的代码:

df = glueContext.create_dynamic_frame.from_options(
    connection_type='s3',
    connection_options={
        'paths': ['s3://my-bucket/'],
        "partitionKeys": [
            "retailer",
            "year",
            "month",
            "day"
        ]
    },
    format='parquet'
)

通过使用普通的 spark 代码和 DataFrame 类,它可以工作,并且分区会包含在我的架构中:

df = spark.read.parquet('s3://my-bucket/').

我想知道是否有办法使用 AWS Glue 的特定方法来做到这一点。

【问题讨论】:

    标签: pyspark aws-glue


    【解决方案1】:

    也许你可以尝试抓取数据并使用 from_catalog 选项读取它。虽然我认为 U 不需要提及分区键,因为它应该看到 = 表示它是一个分区。特别是考虑到胶水只是火花的包装

    【讨论】:

    • 我后来尝试了不带分区和不带分区,但它产生了零差异。我最终只使用了 spark.read,它是一次性的操作,所以它不需要太复杂。我只是好奇 Glue 是否可以处理这种情况。
    猜你喜欢
    • 2020-04-25
    • 1970-01-01
    • 1970-01-01
    • 2018-06-30
    • 1970-01-01
    • 2019-04-08
    • 1970-01-01
    • 2021-08-28
    • 2021-05-02
    相关资源
    最近更新 更多