【发布时间】:2021-06-04 12:39:45
【问题描述】:
问题
我们有一个 Apache Flink 应用程序,旨在从 Kafka 读取事件并将计算结果发送到 ElasticSearch。由于一些资源问题,我们不得不从 Kafka 回退到 Amazon S3。
消息以ndjson 格式小批量发布到 Amazon S3 存储桶。
文件按以下方式组织:/{year}/{month}/{day}/{hour}.
因此,我们每小时都会创建一个新文件夹,在该文件夹下存储最新事件。
设计
正如我们所见,每当创建新对象时,Amazon S3 都会发出 notifications。
我们可以将这些通知推送到 SQS 或 Lambda。
- 正如this topic 中所述,Flink 不支持 SQS。
- 对于 Lambda,我们可以获取 S3 对象并将其推送到 Kinesis Data Stream
我们还找到了避免编写自定义 Lambda 函数的替代解决方案:
问题
但在所有情况下,我们最终都使用了 KDS。在创建对象时,是否可以将数据从 Amazon S3 推送到 Flink?
【问题讨论】:
-
Flink 源代码只是一个必须实现的接口。您可以开发自己的来源,知道如何从 Amazon SQS 获取数据。
-
@YuvalItzchakov 你能指出一个示例实现吗?
-
@YuvalItzchakov 有什么选项不需要实现我们自己的源函数吗?
-
我不相信今天有活跃的来源,所以很遗憾。
标签: amazon-web-services amazon-s3 architecture apache-flink amazon-kinesis