Apache Camel Kafka 连接器:以 Avro 格式写入 GCS

Posted

技术标签:

【中文标题】Apache Camel Kafka 连接器:以 Avro 格式写入 GCS【英文标题】:Apache Camel Kafka Connector: write to GCS in Avro format 【发布时间】:2022-01-14 20:08:24 【问题描述】:

我想使用 Protobuf 中来自 Kafka 的事件,并使用 Apache Camel Kafka 连接器将它们写入 GCS。我使用 Protobuf 转换器,因此事件具有附加值和模式。 我是否可以将这些事件以 Avro 格式(带有架构的 GenericDatumWriter)写入 Google Cloud Storage? 我还想将事件批处理成更大的文件。

我找不到在 Avro 中编写文件的示例,不胜感激! 干杯!

【问题讨论】:

【参考方案1】:
    要使用官方的 Confluent ProtobufConverter,需要一个 Confluent 模式注册表。这个官方的 ProtobufConverter 能够转换由 probobuf 序列化的字节。 考虑使用Kafka Connect GCS connector。 第一个问题是:为什么选择Apache Camel connector? 转换器中的toConnectData 方法返回SchemaAndValue,它可以转换为Avro/Parquet/JSON 模式和数据。这正是 GCS 连接器能够支持多种输出格式的原因。

【讨论】:

我使用自定义的 ProtobufConverter,它不需要 Schema 注册表并提供 SchemaAndValue。要回答您的问题,选择 Apache Camel 是因为我不使用 Confluent 平台并且没有 Confluent 许可证,而来自 Confluent 的 GCS Sink 需要许可证。 Apache Camel 是免费的,所以我希望我可以用它来做同样的事情,但我不知道如何配置它。 我明白了。请参考 Kafka Connect s3 连接器的源代码:github.com/confluentinc/kafka-connect-storage-cloud/tree/master/…。里面的概念,比如格式和作者,应该对你的实现很有帮助。

以上是关于Apache Camel Kafka 连接器:以 Avro 格式写入 GCS的主要内容,如果未能解决你的问题,请参考以下文章

Apache Camel Kafka 支持 Confluent 模式注册表

使用 Apache Camel Source 从 S3 到 Kafka

如何在 Apache Camel 中检测损坏/恢复的 JMS 连接?

Camel-Kafka java.io.EOFException - NetworkReceive.readFromReadableChannel

Apache Camel:如何存储变量以供以后使用

架构设计:系统间通信(36)——Apache Camel快速入门(上)