Kafka Connect:如何将字符串解析为映射

时间:2019-04-13 16:37:28

标签: json apache-kafka apache-kafka-connect

假设我有一个文件,其中包含JSON个对象/行,并用换行符(\n)分隔。当基于 FileStreamSource 的连接器读取此文件时,它将把每行视为java.lang.String

一个人如何将这个java.lang.String解析为java.util.Mapstruct以执行进一步的转换(例如,使用 MaskField 屏蔽字段或提取字段使用 ExtractField )?

PS:问题不是关于如何将某些java.lang.String解析为java.util.Mapstruct,而是关于如何将这种解析逻辑与Kafka(自定义的Kafka转换?)集成在一起?通过其他方式(例如在Kafka中进行配置或使用特定的连接器/转换等)获得相同的结果

2 个答案:

答案 0 :(得分:0)

有两种可能的方法:

  1. 您可以使用Confluent平台并使用适当的KSQL查询(https://docs.confluent.io/current/ksql/docs/tutorials/index.html#ksql-tutorials)运行连接器。
  2. 您可以启动Kafka Stream应用(https://kafka.apache.org/documentation/streams/)以及源连接器。流应用程序将从连接器放入消息的主题中读取消息。您需要在Kafka流应用中实现转换逻辑。处理消息后,Stream应用程序会将其放入输出主题。下面是流应用程序代码的示例结构。
Private Sub cmdUpdStock_Click()
Dim totalrow As Long
totalrow = StockData.Range("A1").CurrentRegion.Rows.Count
For currentrow = 2 To totalrow
If Trim(txtLineNumber) = Trim(Cells(currentrow, 2)) Then
Cells(currentrow, 5) = txtInvoiceDate.Text
Cells(currentrow, 7) = cmbWHS.Text

答案 1 :(得分:0)

如Apache Kafka文档所述,FileStreamSource并非完全受生产支持的连接器...

也许最好使用spooldir连接器,该连接器支持行定界JSON https://github.com/jcustenborder/kafka-connect-spooldir/blob/master/README.md