Java IBM CDC-Kafka的数据复制(LiveAudit上的定制)
我们使用IBMAS400作为源表。我想做的是:Java IBM CDC-Kafka的数据复制(LiveAudit上的定制),java,apache-kafka,ibm-midrange,ibm-data-replication,Java,Apache Kafka,Ibm Midrange,Ibm Data Replication,我们使用IBMAS400作为源表。我想做的是: 使用描述性的列名称(如“收盘价”)而不是系统列名称(“CPHKD001”) 将时间戳格式“2020-03-10 18:25:31.12345600000”转换为“2020-03-10T18:25:31.123Z” 我想我应该处理文件kColpiveAuditSingleRowIntegrated.java。对于时间戳,可能有解决方案,但我认为我无法在那里找到答案。KCOP基础设施允许您对卡夫卡制作人记录进行编程控制。对于源代码上的每个操作,您可以确
列名称
(如“收盘价”)而不是系统列名称
(“CPHKD001”)我想我应该处理文件
kColpiveAuditSingleRowIntegrated.java
。对于时间戳,可能有解决方案,但我认为我无法在那里找到答案。KCOP基础设施允许您对卡夫卡制作人记录进行编程控制。对于源代码上的每个操作,您可以确定有多少消息写入Kafka,这些消息也会写入哪些主题,以及键和值字节是什么
在KCOP中,您可以使用java将时间戳重新定义为您喜欢的任何格式。这是因为每次调用createProducerRecords都会为您提供一个建议的Avro通用记录,该记录具有一个模式,允许您标识表、列及其类型
根据开源Avro文档中记录的Avro通用记录行为,您可以选择感兴趣的相关值,并使用转换后的值创建新的Avro通用记录。然后将这个新的Avro通用记录传递到KCOP的其余部分
请注意,audit KCOP包含执行此操作的代码,单行Avro audit KCOP就是一个很好的示例。您可以在产品安装的samples.jar文件中找到我们所有集成KCOP的代码
单行Avro审核KCOP获取Avro通用记录之前和之后的记录,并生成一个新的Avro通用记录,该记录是它们的组合。如果在复制值时检查了列的类型,则可以识别时间戳,并更改要放入新的复合Avro通用记录中的值
但是,我们确实提供了一些预格式化的灵活性,如下链接所示
注意:要使用此可选的预格式化程序,您需要“要启用此参数,必须将mirror_write_format参数设置为DYNAMIC。”
您将注意到,可以设置一个数据存储参数,该参数将允许对KCOP接收的时间戳数据进行通常需要的自定义
“AVRO(默认)
将时间戳列值格式化为UNIX历元(1970年1月1日)(ISO日历)的微秒数。为了进行此计算,时间戳假定为UTC
对于精度大于微秒的时间戳列,值的格式为字符串。您可以使用TIMESTAMP_format datastore参数指定字符串格式。TIMESTAMP_format的默认值为YYY MM dd HH:MM:ss.SSSNNNNPPP
带有时区列值的时间戳格式为字符串。您可以使用TIMESTAMP_tz_format datastore参数指定字符串格式。TIMESTAMP_tz_format的默认值为yyyy MM dd HH:MM:ss.SSSNNNNPPP T。“
如果这不能提供所需的确切格式,则可以选择最接近的格式并修改KCOP中时间戳列的值
修改KCOP的操作如下所示
关于列名的问题是相同的。如果使用的KCOP使用的是Avro模式注册表,那么您可以通过编程方式更改在模式注册表中注册的模式。如果是JSON字符串,则可以在创建JSON字符串后对其进行更改,或者在调用Avro to JSON方法之前进行更改
或者,如果您的源代码支持派生列,我相信在管理控制台中,您可以使用一个新名称定义派生列,该名称只是原始列的值。我的记忆是,您可以取消选择原始列,因此您的姓名将被更改。KCOP基础设施允许您对卡夫卡制作人记录进行编程控制。对于源代码上的每个操作,您可以确定有多少消息写入Kafka,这些消息也会写入哪些主题,以及键和值字节是什么 在KCOP中,您可以使用java将时间戳重新定义为您喜欢的任何格式。这是因为每次调用createProducerRecords都会为您提供一个建议的Avro通用记录,该记录具有一个模式,允许您标识表、列及其类型 根据开源Avro文档中记录的Avro通用记录行为,您可以选择感兴趣的相关值,并使用转换后的值创建新的Avro通用记录。然后将这个新的Avro通用记录传递到KCOP的其余部分 请注意,audit KCOP包含执行此操作的代码,单行Avro audit KCOP就是一个很好的示例。您可以在产品安装的samples.jar文件中找到我们所有集成KCOP的代码 单行Avro审核KCOP获取Avro通用记录之前和之后的记录,并生成一个新的Avro通用记录,该记录是它们的组合。如果在复制值时检查了列的类型,则可以识别时间戳,并更改要放入新的复合Avro通用记录中的值 但是,我们确实提供了一些预格式化的灵活性,如下链接所示 注意:要使用此可选的预格式化程序,您需要“要启用此参数,必须将mirror_write_format参数设置为DYNAMIC。” 您将注意到,可以设置一个数据存储参数,该参数将允许对KCOP接收的时间戳数据进行通常需要的自定义 “AVRO(默认) 将时间戳列值格式化为UNIX历元(1970年1月1日)(ISO日历)的微秒数。为了进行此计算,时间戳假定为UTC 对于精度大于微秒的时间戳列,th