如何将数据从S3存储桶传输到Kafka

时间:2019-04-03 15:57:51

标签: amazon-web-services amazon-s3 apache-kafka

有一些有关将数据从Kafka主题复制到S3的示例和文档,但是如何将数据从S3复制到Kafka?

2 个答案:

答案 0 :(得分:1)

根据您的方案或上载对象的所需频率,可以在每个事件(例如,每次上载文件)上使用Lambda函数,也可以将其用作cron。该lambda通过使用Kafka API充当生产者,并发布到主题。

详细信息:

  • Lambda函数的触发器可以是来自directly s3cloudwatch eventss3:PutObject事件。
  • 如果您不需要即时对象,可以运行lambda as a cron。在这种情况下,备用服务器也可以在具有Kafka生产者和从s3中读取对象的权限的EC2实例上运行cron,并且继续将其推送到kafka主题。

答案 1 :(得分:0)

When you read an S3 object, you get a byte stream。您可以使用ByteArraySerializer将任何字节数组发送到Kafka。

或者您可以将该InputStream解析为某个自定义对象,然后发送该using whatever serializer you can configure

您可以在此处找到一个Kafka Connect流程示例(我假设您正在与Confluent的S3 Connect编写器进行比较)-https://jobs.zalando.com/tech/blog/backing-up-kafka-zookeeper/index.html,可以将其配置为从S3读取二进制归档文件或行限制文本。

类似地,Apache Spark,Flink,Beam,NiFi等类似的Hadoop相关工具也可以从S3读取数据并将事件写入Kafka。


此方法的问题是,您需要跟踪到目前为止已读取的文件,并处理部分读取的文件。