如何在Kafka接收器JDBC连接器

时间:2018-05-10 19:43:04

标签: apache-kafka confluent-kafka confluent

我正在使用第三方CDC工具将源数据库中的数据复制到Kafka主题中。示例行如下所示:

{  
   "data":{  
      "USER_ID":{  
         "string":"1"
      },
      "USER_CATEGORY":{  
         "string":"A"
      }
   },
   "beforeData":{  
      "Data":{  
         "USER_ID":{  
            "string":"1"
         },
         "USER_CATEGORY":{  
            "string":"B"
         }
      }
   },
   "headers":{  
      "operation":"UPDATE",
      "timestamp":"2018-05-03T13:53:43.000"
   }
}

接收器文件中需要哪些配置才能提取dataheaders下的所有(子)字段,并忽略beforeData下的那些字段,以便其中的目标表数据将由Kafka Sink转移,其中包含以下字段:

USER_ID, USER_CATEGORY, operation, timestamp

我经历了transformation list in confluent's docs,但我无法找到如何使用它们来实现上述目标。

1 个答案:

答案 0 :(得分:0)

如果您愿意列出特定的字段名称,则可以通过以下方法解决此问题:

  1. 使用Flatten变换折叠嵌套(它将原始结构的路径转换为以点分隔的名称)
  2. 使用Tuple替换替换,使字段名称成为您希望接收器发出的名称
  3. 使用另一个rename替换替换将发射的字段限制为您选择的字段

对于您的情况,可能看起来像这样:

whitelist