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