Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Confluent Kafka connect-JDBC Oracle源连接器中将时间戳值格式化为日期格式_Jdbc_Apache Kafka_Apache Kafka Connect - Fatal编程技术网

如何在Confluent Kafka connect-JDBC Oracle源连接器中将时间戳值格式化为日期格式

如何在Confluent Kafka connect-JDBC Oracle源连接器中将时间戳值格式化为日期格式,jdbc,apache-kafka,apache-kafka-connect,Jdbc,Apache Kafka,Apache Kafka Connect,我在Kafka Connect中设置了一个JDBC Oracle源连接器,在Oracle表中有一个时间戳列,其值设置为日期格式“21-MAR-18 05.39.44.0194990 AM” Oracle表中的所有数据都会提取到Kafka主题中,但Oracle表中日期格式列(时间戳列)的值会转换为毫秒,并在主题中显示为毫秒值。我希望收到Oracle表中的日期格式 { "name":"JDBC_CONN_1", "config":

我在Kafka Connect中设置了一个JDBC Oracle源连接器,在Oracle表中有一个时间戳列,其值设置为日期格式“21-MAR-18 05.39.44.0194990 AM”

Oracle表中的所有数据都会提取到Kafka主题中,但Oracle表中日期格式列(时间戳列)的值会转换为毫秒,并在主题中显示为毫秒值。我希望收到Oracle表中的日期格式

{
  "name":"JDBC_CONN_1",
  "config": {
  "connector.class": "io.confluent.connect.jdbc.JdbcSourceConnector",
  "connection.url": "jdbc:oracle:thin:@<hostname>:1521/<servicename>",
  "connection.user": "User",
  "connection.password": "Password",
  "table.whitelist": "Table_Name",
  "catalog.pattern": "",
  "schema.pattern": "Schema_Name",
  "mode": "bulk",
  "poll.interval.ms": "1000",
  "numeric.mapping":"best_fit",
  "topic.prefix": "JDBC_CONN_1"
  }
}

主题中的值:1522129184019(等效毫秒格式)

您可以使用SMT时间转换器

解决问题的示例seam:

"transforms": "TimestampConverter",
"transforms.TimestampConverter.type": "org.apache.kafka.connect.transforms.TimestampConverter$Value",
"transforms.TimestampConverter.format": "yyyy-MM-dd"
"transforms.TimestampConverter.target.type": "string"
之前:
1556204536000


之后:
“2014-04-25”

解决此问题的简单而优雅的方法是在MySQL源代码上使用此属性:

"time.precision.mode":"connect"
这将使用Kafka Connect内置日期类型处理日期:

connect使用Kafka connect对时间、日期和时间戳的内置表示来表示时间和时间戳值。无论数据库列精度如何,它都使用毫秒精度

此属性的默认值为“自适应时间微秒”:

adaptive_time_微秒(默认值),它捕获的日期、日期时间和时间戳值与数据库中的值完全相同。它使用基于数据库列类型的毫秒、微秒或纳秒精度值。时间类型字段是一个例外,它总是以微秒的形式捕获


有关详细信息,请参见

其非日期格式及其字符串格式。。
"time.precision.mode":"connect"