Java IBM CDC-Kafka的数据复制(LiveAudit上的定制)

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基础设施允许您对卡夫卡制作人记录进行编程控制。对于源代码上的每个操作,您可以确

我们使用IBMAS400作为源表。我想做的是:

  • 使用描述性的
    列名称
    (如“收盘价”)而不是
    系统列名称
    (“CPHKD001”)
  • 将时间戳格式“2020-03-10 18:25:31.12345600000”转换为“2020-03-10T18:25:31.123Z”

  • 我想我应该处理文件
    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