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

flink-cdc-oracle 可以并行读取吗?

flink-cdc-oracle 可以并行读取吗, 同步1000万数据,我这边半天没同步完, 这个有什么优化策略吗?这个怎么设置先全量并行读,然后增量 是flink sql跑的?

展开
收起
真的很搞笑 2023-11-16 08:07:49 88 0
5 条回答
写回答
取消 提交回答
  • 是的,Flink CDC支持并行读取数据。您可以在创建Flink Table时设置parallelism参数来指定并行度。
    对于您的问题,如果您同步的数据量很大,并且同步速度很慢,可以考虑以下优化策略:

    1. 增加并行度:您可以增加Flink CDC任务的并行度,以加快数据读取速度。这可以通过在创建Flink Table时设置parallelism参数来实现。
    2. 减少数据量:如果可能的话,您可以尝试减少需要同步的数据量。例如,只同步最近一段时间的数据,或者只同步部分表或列。
    3. 调整Oracle参数:您还可以调整Oracle数据库的相关参数,以提高数据读取速度。例如,可以调整db_file_multiblock_read_count参数来提高多块读取的速度。

    关于全量并行读和增量的问题,Flink CDC支持两种模式:全量同步和增量同步。您可以在创建Flink Table时选择相应的模式。例如:

    CREATE TABLE my_table (
      -- 定义表结构和字段
    ) WITH (
      'connector' = 'oracle-cdc',
      'hostname' = 'localhost',
      'port' = 1521,
      'database-name' = 'my_database',
      'username' = 'my_username',
      'password' = 'my_password',
      'server-id' = 1,
      'initial-offset' = 'latest', -- 设置初始偏移为最新
      'incremental-mode' = 'true' -- 设置增量模式为真
    );
    

    在这个例子中,通过设置incremental-mode参数为true,可以将Flink CDC任务配置为增量模式。这样,在第一次同步时会进行全量同步,后续的同步则只会同步新增或修改的数据。

    2023-11-16 21:45:04
    赞同 展开评论 打赏
  • Flink CDC确实支持并行读取数据。如果你的同步速度很慢,你可以尝试以下优化策略:

    1. 调整并行度:增加并行度可以加快数据处理速度。你可以在Flink SQL中设置parallelism参数来调整并行度。
    2. 增加fetchTimeout参数:这可以让Flink CDC在读取Oracle数据库时更加宽松。
    3. 检查网络和硬件资源:如果网络带宽不足或者硬件资源紧张,也会影响数据同步速度。

    对于先全量并行读取再增量读取的需求,你可以使用Flink SQL来实现。你需要创建一个表来存储全量数据,然后使用CREATE TABLE LIKE语句创建一个新的表,用于存储增量数据。你可以使用INSERT INTO语句将全量数据插入到新表中。你可以使用SELECT * FROM ... WHERE ...语句来查询增量数据,并将其插入到新表中。

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

    是的,Flink CDC 支持并行读取数据,而且可以提高同步的效率。但是,并行度越高,消耗的资源也就越多,所以要根据实际情况进行调整。
    对于 Oracle,Flink CDC 提供了一些参数来控制并行度:

    • tasks.max-concurrent-updates-per-source 参数:可以指定并行读取的最大并发数,即每次最多有多少个并行任务同时读取 Oracle 数据源。
    • fetch-size 参数:可以指定每次读取的数据大小,默认值是 1000,但可以自行设定更大的值。

    如果你的表包含 1000 万个记录,并且只有几个并行任务同时读取,那么可能需要花费很长时间才能完成同步。你可以增加并行度来加速同步,但是要注意不要过度消费资源,以免影响系统的性能。
    此外,你可以设置参数 incremental.snapshot.interval 来开启增量同步。这样,Flink CDC 只会同步最近一段时间内发生变更的记录,从而减少读取的数据量。
    最后,你还可以在 Flink SQL 中使用 SQL 语句来优化同步过程。例如,你可以根据需要指定分区、过滤条件等,以加快查询速度。
    总之,要加速 Oracle 数据同步,可以通过增加并行度、设置增量同步间隔和优化 SQL 语句等方式来进行优化。但是请注意不要过度消费资源,以免影响系统的性能。

    2023-11-16 13:08:53
    赞同 展开评论 打赏
  • Flink CDC for Oracle可以并行读取,并且支持增量和全量读取。如果你发现同步1000万数据需要很长时间,可以考虑以下优化策略:

    1. 增加并行度:可以通过调整Flink作业的并行度来提高读取速度。可以尝试增加并行度的数量,以充分利用集群资源。

    2. 调整批处理大小:Flink CDC for Oracle默认使用较小的批处理大小进行读取,这可以提高读取速度。你可以尝试增加批处理大小,但要注意不要设置过大的值,以免影响性能。

    3. 使用更高效的序列化方式:Flink CDC for Oracle默认使用Java序列化方式,你可以尝试使用更高效的序列化方式,如Kryo序列化,以提高读取速度。

    4. 调整网络参数:如果Flink作业运行在分布式环境中,你可以调整网络参数,如TCP缓冲区大小、最大线程数等,以提高数据传输效率。

    关于先全量并行读,然后增量的问题,你可以在Flink SQL中使用INSERT INTO ... SELECT语句来实现。首先创建一个空表用于存储全量数据,然后使用INSERT INTO ... SELECT语句将全量数据插入到该表中。接下来,使用Flink CDC for Oracle读取增量数据,并使用INSERT INTO ... SELECT语句将增量数据插入到目标表中。这样可以实现先全量并行读,然后增量的方式。

    2023-11-16 10:03:13
    赞同 展开评论 打赏
  • 全量是并行的,增量并行会出问题的,全量可以考虑按照主键或rowid做切分,增量不好并行,此回答整理自钉群“Flink CDC 社区”

    2023-11-16 08:43:19
    赞同 展开评论 打赏

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

相关产品

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

    更多
    Flink CDC Meetup PPT - 龚中强 立即下载
    Flink CDC Meetup PPT - 王赫 立即下载
    Flink CDC Meetup PPT - 覃立辉 立即下载

    相关镜像