将AWS Kinesis Firehose数据按有效负载分区到S3

6

我正在使用AWS-Kinesis-Firehose将数据注入到S3中,然后使用Athena进行消费。

我正在尝试分析来自不同游戏的事件,为了避免Athena探索大量数据,我想使用每个游戏的标识符对s3数据进行分区,但迄今为止我没有找到解决方案,因为Firehose接收来自不同游戏的数据。

有没有人知道如何做到这一点?

谢谢, Javi。


最好添加你目前的代码。 - ammportal
为什么这个问题被标记为重复?它是一个有效的、非常不同的问题。将其标记为重复是错误的。这个问题询问如何基于Kinesis流的值创建自定义分区。应该被认为是重复的问题谈论的是Parquet文件,两者完全不同。Kinesis也可以在没有转换的情况下工作。请移除重复标记。 - suresh
2个回答

3

2
您可以将流量发送到主FireHose流,然后使用Lambda函数将数据拆分到多个FireHose流中 - 每个游戏一个流,将数据保存在单独的文件夹/存储桶中。

1
我考虑过这个问题,但是有一个难题。我预计每天会有大约2000万个事件,这意味着Lambda函数每天将被触发2000万次,仅仅为了“分类”这些事件,这将非常昂贵。 - bracana
我已经找到了CloudWatch事件,可以帮助我按时间间隔执行操作,但仍可能很昂贵。 - bracana
1
Lambda可以通过FireHose批量触发最多1000个事件,这将大大减少您的触发器。 - Shimon Tolts
我已经按照您之前的建议完成了,通过将一个lambda函数分配给firehose流,由于我配置了300秒的批处理时间,这已经足够满足我的需求。对于我来说,基于事件的批处理不可行,因为我可能会在短时间内收到许多事件或仅有几个,我不想等到收到1000个事件。非常感谢您的帮助! - bracana
请注意,批处理设置为“最多X个事件”,它不会等待流达到限制再执行。 - Shimon Tolts

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接