Apache kafka 卡夫卡接收器连接器能否将记录时间戳作为存储在存储器中的有效负载

Apache kafka 卡夫卡接收器连接器能否将记录时间戳作为存储在存储器中的有效负载,apache-kafka,apache-kafka-connect,confluent-platform,s3-kafka-connector,Apache Kafka,Apache Kafka Connect,Confluent Platform,S3 Kafka Connector,我同时使用S3和JDBC接收器连接器,在存储数据时遇到了一些奇怪的行为。对于一些协调,我真的希望将卡夫卡摄取时间或记录生成时间保存到存储在接收器系统中的数据中 我在查看文档,但没有找到这个。 我正在使用汇合连接器,但如果它允许我这样做,我也可以使用其他连接器,如Camel 有人能给我一些建议吗 更新: 基于onecricketeer的良好反馈,我明白我应该关注以下内容: 我也看到了这个例子: 我将测试它,但我是否正确理解,例如,理论上我可以这样做: "transforms"

我同时使用S3和JDBC接收器连接器,在存储数据时遇到了一些奇怪的行为。对于一些协调,我真的希望将卡夫卡摄取时间或记录生成时间保存到存储在接收器系统中的数据中

我在查看文档,但没有找到这个。 我正在使用汇合连接器,但如果它允许我这样做,我也可以使用其他连接器,如Camel

有人能给我一些建议吗

更新: 基于onecricketeer的良好反馈,我明白我应该关注以下内容:

我也看到了这个例子:

我将测试它,但我是否正确理解,例如,理论上我可以这样做:

"transforms": "InsertField",
"transforms.InsertField.type": "org.apache.kafka.connect.transforms.InsertField$Value",
"transforms.InsertField.offset.field": "recordOffset"
"transforms.InsertField.partition.field": "recordPartition"
"transforms.InsertField.timestamp.field": "recordTimestamp"
这将在记录中创建3个新属性,名为recordOffset、recordPartition和recordTimestamp,其中包含所描述的值

如果我想确保这些值始终存在或失败,我需要这样做(不确定我是否理解后缀部分):


正如
@OneCricketeer
所说,
InsertField
单消息转换在这里完成工作。下面是使用它的S3接收器配置示例:

{
“connector.class”:“io.confluent.connect.s3.s3连接器”,
“storage.class”:“io.confluent.connect.s3.storage.S3Storage”,
“s3.地区”:“us-west-2”,
“s3.bucket.name”:“rmoff-smt-demo-01”,
“主题”:“客户、交易”,
“tasks.max”:“4”,
“齐平尺寸”:“16”,
“format.class”:“io.confluent.connect.s3.format.json.JsonFormat”,
“schema.generator.class”:“io.confluent.connect.storage.hive.schema.DefaultSchemaGenerator”,
“schema.compatibility”:“无”,
“partitioner.class”:“io.confluent.connect.storage.partitioner.DefaultPartitioner”,
“转换”:“插入、格式化”,
“transforms.insertTS.type”:“org.apache.kafka.connect.transforms.InsertField$Value”,
“transforms.insertTS.timestamp.field”:“messageTS”,
“transforms.formatTS.type”:“org.apache.kafka.connect.transforms.TimestampConverter$Value”,
“transforms.formatTS.format”:“yyyy-MM-dd HH:MM:ss:SSS”,
“transforms.formatTS.field”:“messageTS”,
transforms.formatTS.target.type:“字符串”
}
请注意,它还使用
TimestampConverter
将时间戳格式化为字符串-默认情况下,它是一个历元


你的问题促使我录制了一个小教程,你可以在这里看到:

正如
@OneCricketeer
所说,
插入字段
单消息转换在这里完成工作。下面是使用它的S3接收器配置示例:

{
“connector.class”:“io.confluent.connect.s3.s3连接器”,
“storage.class”:“io.confluent.connect.s3.storage.S3Storage”,
“s3.地区”:“us-west-2”,
“s3.bucket.name”:“rmoff-smt-demo-01”,
“主题”:“客户、交易”,
“tasks.max”:“4”,
“齐平尺寸”:“16”,
“format.class”:“io.confluent.connect.s3.format.json.JsonFormat”,
“schema.generator.class”:“io.confluent.connect.storage.hive.schema.DefaultSchemaGenerator”,
“schema.compatibility”:“无”,
“partitioner.class”:“io.confluent.connect.storage.partitioner.DefaultPartitioner”,
“转换”:“插入、格式化”,
“transforms.insertTS.type”:“org.apache.kafka.connect.transforms.InsertField$Value”,
“transforms.insertTS.timestamp.field”:“messageTS”,
“transforms.formatTS.type”:“org.apache.kafka.connect.transforms.TimestampConverter$Value”,
“transforms.formatTS.format”:“yyyy-MM-dd HH:MM:ss:SSS”,
“transforms.formatTS.field”:“messageTS”,
transforms.formatTS.target.type:“字符串”
}
请注意,它还使用
TimestampConverter
将时间戳格式化为字符串-默认情况下,它是一个历元


您的问题促使我录制了一个小教程,您可以在这里看到:

您希望了解将记录时间戳插入(或重新定位)到消息的值部分的简单消息转换谢谢。我相信我想要的是,你可以给我答案,让我把它标记为正确答案。我还有一个问题,是基于对这个回答的后续观察,例如(我将测试的东西)。我相信我可以使用例如偏移量,但有没有办法确保偏移量被称为特定的东西?与静态?
偏移相同。字段
将是数字偏移值的键。。。我看到你对
的评论了运算符,但我从未真正看到使用过。然而,文件上写着“后缀”,你在这里做前缀,我没有用后缀,因为它不需要。但是你是对的,我应该正确阅读:)后缀/前缀完全不同:)你应该看看简单的消息转换,将记录时间戳插入(或重新定位)消息的值部分谢谢。我相信我想要的是,你可以给我答案,让我把它标记为正确答案。我还有一个问题,是基于对这个回答的后续观察,例如(我将测试的东西)。我相信我可以使用例如偏移量,但有没有办法确保偏移量被称为特定的东西?同
"transforms": "InsertField",
"transforms.InsertField.type": "org.apache.kafka.connect.transforms.InsertField$Value",
"!transforms.InsertField.offset.field": "recordOffset"
"!transforms.InsertField.partition.field": "recordPartition"
"!transforms.InsertField.timestamp.field": "recordTimestamp"