如何使用Kafka connect将输出输出到GCS中的动态目录?

时间:2019-03-24 21:34:45

标签: apache-kafka google-cloud-storage apache-kafka-connect

我正在从Kafka主题中获取JSON数据。我需要将此数据转储到GCS(Google云存储)的目录中,其中将从JSON数据中的“ ID”值中提取目录名称。

我用Google搜索,但没有找到任何类似的用例,在该用例中,可以使用Kafka Connect来解释JSON数据并根据JSON数据中的值动态创建目录。 可以使用Kafka Connect来实现吗?

2 个答案:

答案 0 :(得分:3)

您可以使用Confluent提供的Kafka Connect GCS sink connector

  

Google云存储(GCS)连接器,目前可作为   下沉,允许您将数据从Kafka主题导出到GCS对象中   各种格式。此外,对于某些数据布局,GCS连接器   通过保证一次准确的传递语义来导出数据   产生的GCS对象的使用者。

这是连接器的示例配置:

name=gcs-sink
connector.class=io.confluent.connect.gcs.GcsSinkConnector
tasks.max=1
topics=gcs_topic

gcs.bucket.name=#bucket-name
gcs.part.size=5242880
flush.size=3

gcs.credentials.path=#/path/to/credentials/keys.json

storage.class=io.confluent.connect.gcs.storage.GcsStorage
format.class=io.confluent.connect.gcs.format.avro.AvroFormat
partitioner.class=io.confluent.connect.storage.partitioner.DefaultPartitioner

schema.compatibility=BACKWARD

confluent.topic.bootstrap.servers=localhost:9092
confluent.topic.replication.factor=1

# Uncomment and insert license for production use
# confluent.license=

您可以在上面提供的链接中找到有关安装和配置的更多详细信息。

答案 1 :(得分:0)

使用大多数连接器开箱即用实际上是不可能的。相反,您可以实现自己的Kafka Connect接收器任务,该任务处理Kafka记录,然后根据JSON将它们写入正确的GCS目录。

Here's the method you'd override在连接器中。

Here's a link to the source code用于AWS S3接收器连接器。