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

Flink CDC中我用flinksql进行了分组并统计,出现这个问题是因为这个原因吗?

Flink CDC中我用flinksql进行了分组并统计 将统计结果写入oracle 。如果多并行写入会报死锁,只能把并行度设置为1才能写入。这是因为对同一个主键同时进行了marge操作导致的吗?

展开
收起
小易01 2023-08-15 23:52:56 60 0
1 条回答
写回答
取消 提交回答
  • 是的,当在 Flink CDC 中使用 Flink SQL 进行分组和统计,并将结果写入 Oracle 数据库时,如果设置了并行度较高并发写入同一个主键,可能会导致死锁的情况发生。

    这是因为在并行度较高的情况下,多个并发任务同时尝试写入同一个主键的统计结果,可能会导致数据库的行级锁冲突,最终导致死锁。这是一个典型的并发写入冲突问题。

    为了解决这个问题,您可以考虑以下几种方案:

    降低并行度:将并行度设置为较低的数值,例如将其设置为1,以确保只有一个任务进行写入操作。这样可以避免并发写入冲突,但同时也会降低写入的吞吐量。

    分片写入:将写入操作分散到不同的分片中,每个任务只处理部分主键的数据。这样可以减少并发写入冲突的可能性。可以通过对数据进行哈希分片或按照其他规则进行分片。

    使用乐观锁或悲观锁:在写入过程中,使用乐观锁或悲观锁来控制并发写入冲突。通过在写入操作中引入锁机制,可以避免死锁发生,并且保证数据的一致性。

    注意,选择适合的方案需要根据具体的业务需求和数据特点来确定。建议在设计和使用 Flink CDC 的过程中,根据实际情况进行调整和优化,以确保数据的正确性和并发写入的性能。

    2023-09-20 15:51:13
    赞同 展开评论 打赏

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

相关产品

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

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