【问题标题】:AWS Firehose to S3 prefix by contentAWS Firehose 到 S3 的内容前缀
【发布时间】:2021-08-23 01:44:48
【问题描述】:

我有一个 Kinesis Firehose 流,其中生成了不同模式的 JSON。 由于这些数据最终应该由其他依赖架构(Glue、Athena)的工具访问,我想通过架构将它们分隔为某些 S3 存储桶中的不同前缀。

我不想为不同的架构使用不同的流。

例如,如果将以下 JSON 发送到流中

{'a': 1, 'b': 2}  # JSON 1
{'a': 8, 'b': 5}  # JSON 2
{'c': 9}  # JSON 3

我希望它们最终存储在 S3 存储桶中,如下所示

/mybucket/YYYY/MM/DD/HH/schema1/json1.json  # JSON 1
/mybucket/YYYY/MM/DD/HH/schema1/json2.json  # JSON 2
/mybucket/YYYY/MM/DD/HH/schema2/json3.json  # JSON 3

我确实事先知道所有可能的模式。

我应该怎么做?

【问题讨论】:

    标签: amazon-web-services amazon-kinesis-firehose


    【解决方案1】:

    很遗憾,你不能这样做。 S3 前缀是流级别设置,而不是记录设置。如果您不想拥有不同的流,则必须将 firehose 更改为常规 kinesis 数据流,它将所有记录定向到 lambda 函数。 lambda 函数将获取记录并将它们放在不同前缀下的 s3 存储桶中。

    【讨论】:

      【解决方案2】:

      AWS 于 2021 年 9 月发布了 Kinesis Data Firehose 动态分区。此功能可以使用 JSON 中的一个或多个键/值来组成分区。

      您可以查看此资源链接。

      https://aws.amazon.com/about-aws/whats-new/2021/08/introducing-dynamic-partitioning-amazon-kinesis-data-firehose/

      https://docs.aws.amazon.com/firehose/latest/dev/dynamic-partitioning.html

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-05-09
        • 2013-03-10
        • 2020-02-08
        • 2020-11-08
        • 2018-05-21
        • 2012-10-03
        • 2016-08-23
        • 2021-05-10
        相关资源
        最近更新 更多