我很好奇是不是很难直接编写自己的代码来使用Kafka Consumer API从Kafka读取并使用AWS SDK写入S3?是否有很多非明显的并发症需要处理?
我问,因为Kafka Connect似乎是从Kafka写入S3的最佳建议方式。
答案 0 :(得分:3)
您之前可能已将其视为类比,因此我也将在此处使用它:您可能会将Connect视为Kafka生产者和消费者的高级框架使用Sources和Sinks(分别是Connect中的生产者和消费者的高级别等价物)将您的数据与Kafka集成。已有available。
中的各种此类源和接收器,简称连接器具体来说,关于从Kafka到Amazon S3的数据导出,已经有一些连接器已经可用,而且由于我对latest one负有部分责任,请允许我提一些优点。使用它。 (希望这将回答你关于从头开始实现所有这些功能是否或多或少直截了当的问题。)
我将我的论点分组为直接基于消费者编写程序,大致分为两类:
- 群集上的透明和可扩展执行。
- 容错执行,与Kafka消费者群体相同(优点是无需编写代码即可获得容错)
- 用于启动和停止连接器的REST界面。
- 一小组指标(很快会扩展到一整套绩效和运营指标)。
- 总体而言,定义简单直观的流数据流,包括数据源,数据的简单转换(SMTs)和接收器。
- 多个格式化程序(当前导出二进制.avro文件和文本.json文件)
- 支持结构化或非结构化数据,以及前者的模式演变模式。
- 一系列分区程序:基于大小,时间或字段,您可以将其用作基类来构建适合自己的自定义分区程序 你的用例,如果他们不能完全按照你想要的那样做。
- 以上分区程序的大多数用例的完全一次语义(意味着,如果您重新处理数据,或者从中恢复 失败,你不会在S3中看到重复的记录。
- 易于配置。
- 来自社区的积极支持(如果你开源的话,你的课程也可能最终拥有)。
总的来说,您不必从头开始编写代码并维护许多其他人(如您)想要使用的代码。此外,如果发现缺少一个或多个功能,则可以在开源S3 Connector中提供这些功能。
答案 1 :(得分:1)
有几个优点:
当然,您可以编写自己的写入S3的消费者应用程序,但为什么要重新发明轮子?