簡體   English   中英

Kafka Connect:讀取 JSON 序列化的 Kafka 消息,轉換為 Parquet 格式並持久化到 S3

[英]Kafka Connect: Read JSON serialized Kafka message, convert to Parquet format and persist in S3

我需要讀取來自 Kafka 主題的 JSON 序列化消息,將它們轉換為 Parquet 並保留在 S3 中。

背景

官方S3-Sink-Connector支持 Parquet output 格式,但是:

對於此連接器,您必須將 AvroConverter、ProtobufConverter 或 JsonSchemaConverter 與 ParquetFormat 一起使用。 嘗試使用 JsonConverter(帶或不帶模式)會導致 NullPointerException 和 StackOverflowException。

如果消息不是使用 JSON Schema serialization 寫入的,JsonSchemaConverter 會拋出錯誤

問題陳述

因此,我正在尋找一種方法來從最初以 JSON 格式編寫的 Kafka 主題讀取消息,以某種方式將它們轉換為 JSON 模式格式,然后將它們插入將以 Parquet 格式寫入 S3 的 S3 連接器。

或者,考慮到主要要求(獲取 Kafka 消息,將其作為 Parquet 文件放入 S3),我也願意接受替代解決方案(不涉及編寫 JAVA 代碼)。 謝謝!

PS:不幸的是,改變這些 Kafka 消息最初的寫入方式(例如使用JSON Schema 序列化Schema Discovery )目前不是我的選擇。

一般來說,您的數據需要有一個模式,因為 Parquet 需要它(S3 parquet 編寫器轉換為 Avro 作為中間步驟)

您可以考慮使用接受模式的連接轉換,並嘗試應用 JSON 模式- 請參閱測試 由於這會返回一個Struct object,因此您可以嘗試使用JsonSchemaConverter作為接收器的一部分。

但是,如果您只是將隨機 JSON 數據扔到沒有任何一致字段或值的單個主題中,那么您將很難應用任何模式

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM