开发者社区 > 大数据与机器学习 > 实时计算 Flink > 正文

Flink CDC中Oracle的cdc监听,对于时间字段默认加了8小时,可以通过参数设置不加吗?

Flink CDC中Oracle的cdc监听,对于时间字段默认加了8小时,这个可以通过参数设置不加吗?

展开
收起
真的很搞笑 2023-11-07 08:05:18 185 0
3 条回答
写回答
取消 提交回答
  • 加资源都不是问题,大表join也不是只能用状态,lookup join也可以。不过大数据量上复杂需求的实现和后续维护确实麻烦。我觉得做是能做,但是得考虑下ROI,大表流join确实有可能join不到数据,数据有问题也不好排查。
    准确性肯定是不如离线的,但是也不能说偏差很多,往离线的准确性上靠。,此回答整理自钉群“Flink CDC 社区”

    2023-11-08 07:42:40
    赞同 展开评论 打赏
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    在 Flink CDC 连接 Oracle 数据库时,默认情况下会对 TIMESTAMP 类型的时间字段增加 8 小时。这是因为 Oracle 数据库中的 TIMESTAMP 类型的时间是以 UTC 时间为基础的,而 Flink CDC 在解析 TIMESTAMP 字段时会将其转换为本地时间,从而造成了 8 小时的偏差。
    为了消除这个偏差,可以在 Flink CDC 的配置文件中设置 serverTimeZone 参数,使其与 Oracle 数据库中 TIMESTAMP 字段所表示的实际时区一致。具体做法如下:

    1. 打开 Flink CDC 的配置文件,找到如下内容:
    connector:
      type: oracle-cdc
      hostname: localhost
      port: 1521
      service-name: orclpdb
      username: system
      password: oracle
      ...
    
    1. 在上述配置的基础上,增加如下内容:
    serverTimeZone: "Asia/Shanghai"
    

    其中,“Asia/Shanghai”是你需要设置的实际时区名称。你可以根据实际情况将其替换为其他时区名称。
    请注意,只有当你的 TIMESTAMP 字段表示的实际时区与 serverTimeZone 参数设定的时区相同时,才能正确地消除 8 小时的偏差。如果实际时区与 serverTimeZone 参数设定的时区不同,那么仍然会有时间偏差。

    2023-11-07 14:24:09
    赞同 展开评论 打赏
  • 在Flink CDC中,对于Oracle的CDC监听,时间字段的默认偏移量确实是8小时。这是为了适应Oracle的时间戳类型(TIMESTAMP WITH TIME ZONE)的特性。这种类型的时间戳包含了时区信息,但是在存储时会自动转换为UTC时间,因此在处理时需要考虑时区的转换问题。

    如果你想修改这个时间偏移量,可以在Flink的任务配置中进行设置。具体的参数名可能会因为Flink的版本不同而有所差异,但是一般来说,你可以通过设置stream.format-versionv2,然后在connector.property中添加time-zone参数来指定时区。

    例如,如果你想将时区设置为UTC,你可以这样设置:

    connector.property.time-zone=UTC
    
    2023-11-07 10:03:15
    赞同 展开评论 打赏

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。

相关产品

  • 实时计算 Flink版
  • 相关电子书

    更多
    PostgresChina2018_樊文凯_ORACLE数据库和应用异构迁移最佳实践 立即下载
    PostgresChina2018_王帅_从Oracle到PostgreSQL的数据迁移 立即下载
    Oracle云上最佳实践 立即下载

    相关镜像