开发者社区 > 大数据与机器学习 > 大数据开发治理DataWorks > 正文

有没有人做过通过flink从Oracle迁移数据到Mysql?

有没有人做过通过flink从Oracle迁移数据到Mysql? 抓取的到的数据通过sink数据输出到mysql, 好像只能一条一条处理。3bf5c547165ca16fbc119b6b375b92b1.png 我看这种,每条数据都要开一个数据库连接来处理啊,有没有一次处理一批的方式?

展开
收起
滴滴滴~ 2023-03-21 09:13:41 296 0
3 条回答
写回答
取消 提交回答
  • 使用时间窗口。此答案整理自钉群“Flink CDC 社区”

    2023-03-21 16:25:49
    赞同 展开评论 打赏
  • 坚持这件事孤独又漫长。

    使用Flink从Oracle迁移数据到MySQL时,确实会遇到一次处理一条数据的限制,因为Flink将每条数据视为事件(event)。而对于数据库导出操作,批处理是更有效的方式。以下是一些优化方法,可以加速从Oracle到MySQL的数据迁移:

    • 批处理操作:使用Flink的批处理模式(batch mode)进行一次性处理多条记录,而不是逐条处理。在批量处理模式下,可以使用一个带有批次大小的循环,一次性处理多条记录。这将减少从Oracle读取数据和将数据写入MySQL的连接的数量。

    • 并行处理:使用并行处理(parallelism)以提高处理速度。使用多个执行线程或处理节点并行处理数据,可以大幅度提高处理速度。Flink提供多种方法来实现并行处理,包括数据切分和任务并行化。

    • 动态调整:动态调整并行度以利用可用资源。Flink提供了弹性扩展机制(elastic scaling),可以动态调整处理节点数量以实现更好的资源利用率。如果从Oracle读取的数据量增加了,则可以通过添加更多的处理节点来增加容量以快速处理数据。

    • 数据倾斜处理:处理大量数据时避免数据倾斜(data skew)情况的出现。Flink支持一些方法来处理数据分配不均衡的问题,例如基于键分区(partitioning by key)和数据再平衡(rebalancing)。

    2023-03-21 11:04:58
    赞同 展开评论 打赏
  • 发表文章、提出问题、分享经验、结交志同道合的朋友

    可以采用Flink的Batch Sink来进行批量写入,举个简单例子:

    // 定义MySQL sink
    JdbcBatchingOutputFormat<Tuple2<String, String>> mysqlSink = JdbcOutputFormat.buildJdbcOutputFormat()
            .setDrivername("com.mysql.jdbc.Driver")
            .setDBUrl("jdbc:mysql://localhost:3306/test")
            .setQuery("INSERT INTO test_table (col1, col2) VALUES (?, ?)")
            .setUsername("username")
            .setPassword("password")
            .finish();
    
    // 写入MySQL
    transformedStream.output(mysqlSink);
    
    2023-03-21 09:30:24
    赞同 展开评论 打赏

DataWorks基于MaxCompute/Hologres/EMR/CDP等大数据引擎,为数据仓库/数据湖/湖仓一体等解决方案提供统一的全链路大数据开发治理平台。

热门讨论

热门文章

相关电子书

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

相关镜像