是否可以在Kafka Connect Sink和KCQL中使用dateof(now())等数据库函数?

时间:2018-03-07 22:16:45

标签: apache-kafka-connect

我正在尝试从像INSERT INTO table SELECT * FROM topic这样的kafka主题做一个简单的接收器 但是也要添加一个insert_timestamp列,其值为dateof(now())

在KCQL中使用这样的数据库函数是否可以用于接收器连接器?我可以以某种方式将函数dateof(now())写入我的主题,而不是仅仅尝试将值作为字符串写入列中吗?或者我可能需要编写一个自定义接收器来支持这个?我会在列上使用默认值,但Cassandra似乎不支持。

1 个答案:

答案 0 :(得分:1)

我不熟悉KCQL。但是,您可以使用Single Message Transforms作为Apache Kafka Connect API的一部分来实现此目的。例如,如果您想要Kafka消息的时间戳,则连接器中的此配置应该执行此操作:

"transforms":"InsertMsgTS",
"transforms.InsertMsgTS.type":"org.apache.kafka.connect.transforms.InsertField$Value",
"transforms.InsertMsgTS.timestamp.field":"message_ts",

如果你想要插入的绝对时间(而不是Kafka消息时间戳),那么你需要编写自己的变换(javadocs