【问题标题】:Confluent Kafka Connect : Run multiple sink connectors in synchronous wayConfluent Kafka Connect:以同步方式运行多个接收器连接器
【发布时间】:2019-01-24 01:56:28
【问题描述】:
我们正在使用 Kafka 连接 S3 接收器连接器,该连接器连接到 Kafka 并将数据加载到 S3 存储桶。现在我想使用 Copy 命令将数据从 S3 存储桶加载到 AWS Redshift,因为我正在创建自己的自定义连接器。使用情况是我想以同步方式将通过 S3 创建的数据加载到 Redshift,然后下次 S3 连接器应该替换现有文件,然后我们的自定义连接器再次将数据加载到 S3。
如何使用 Confluent Kafka Connect 或其他更好的方法来完成相同的任务?
提前致谢 !
【问题讨论】:
标签:
apache-kafka
apache-kafka-connect
confluent-platform
【解决方案1】:
如果你想要数据到 Redshift,你应该只使用 JDBC Sink 连接器并将Redshift JDBC Driver 下载到 kafka-connect-jdbc 目录中。
否则,您可以使用 Lambda 触发某种类型的 S3 事件通知来执行某种类型的 Redshift 上传,而不是编写连接器
或者,如果您只是想查询 S3 数据,您可以使用 Athena 而不是处理任何数据库
但基本上,Sink 连接器不会在彼此之间进行通信。它们是独立的任务,旨在最初从主题消费并写入目标,不一定触发外部下游系统。
【解决方案2】:
您想实现从 Kafka 到 redshift 的同步行为,那么 S3 sink 连接器不是正确的选择。
- 如果您使用 S3 接收器连接器,则首先将数据放入 s3,然后在外部运行复制命令以推送到 S3。 (复制命令是额外开销)
- 在推送到 redshift 之前不能进行任何自定义代码或验证。
- Redshift sink 连接器提供了本地 jdbc 库,其速度相当于 S3 复制命令。