1.概述

转载:https://blog.csdn.net/u013939918/article/details/107623778

流计算的一个典型场景是把聚合的数据写入到 Upsert Sink 中,比如 JDBC、HBase,当遇到复杂的 SQL 时,时常会出现:


UpsertStreamTableSink 需要上游的 Query 有完整的 Primary Key 信息,不然就直接抛异常。这个现象涉及到 Flink 的 UpsertStreamTableSink 机制。顾名思义,它是一个更新的 Sink,需要按 Key 来更新,所以必须要有 Key 信息。

如何发现 Primary Key?一个方法是让优化器从 Query 中推断,如下图发现 Primary Key 的例子。

这种情况下在简单 Query 当中很好,也满足语义,也非常自然。但是如果是一个复杂的 Query,比如聚合又 Join 再聚合,那就只有报错了。不能期待优化器有多智能,很多情况它都不能推断出 PK,而且,可能业务的 SQL 本身就不能推断出 PK,所以导致了这样的异常。


怎么解决问题?Flink 1.11 彻底的抛弃了这个机制,不再从 Query 来推断 PK 了,而是完全依赖 Create table 语法。比如 Create 一个 jdbc_table,需要在定义中显式地写好 Primary Key(后面 NOT ENFORCED 的意思是不强校验,因为 Connector 也许没有具备 PK 的强校验的能力)。当指定了 PK,就相当于就告诉框架这个Jdbc Sink 会按照对应的 Key 来进行更新。如此,就跟 Query 完全没有关系了,这样的设计可以定义得非常清晰,如何更新完全按照设置的定义来。

CREATE TABLE jdbc_table (id BIGINT,...PRIMARY KEY (id) NOT ENFORCED
)

【Flink】Flink UpsertStreamTableSink requires that has a full primary keys if update相关推荐

  1. 【3】flink sink

    [README] 本文记录了flink sink操作,输出目的存储器(中间件)包括 kafka: es: db: 等等有很多: 本文只给出了 sink2kafka的代码: 本文使用的flink为 1. ...

  2. 【2】flink数据流转换算子

    [README] 本文记录了flink对数据的转换操作,包括 基本转换,map,flatMap,filter: 滚动聚合(min minBy max maxBy sum): 规约聚合-reduce: ...

  3. 【Flink】Flink 不支持部分 task 结束后进行 checkpoint

    纪念一波,九师兄博客热门订阅专栏时常名列前茅,我飘了,哈哈哈哈,得意的笑 1.概述 以前遇到一个问题,这个问题是这样的,一个FLink job,然后部分是离线任务,数据读取完毕了,就结束了.然后发现就 ...

  4. 【Flink】Flink 源码阅读笔记(20)- Flink 基于 Mailbox 的线程模型

    1.概述 转载:Flink 源码阅读笔记(20)- Flink 基于 Mailbox 的线程模型 相似文章:[Flink]Flink 基于 MailBox 实现的 StreamTask 线程模型 Fl ...

  5. 【Flink】Flink 源码之Buffer Debloating

    1.概述 转载:[Flink]Flink 源码之Buffer Debloating 2.什么是Buffer debloating Buffer Debloating是Flink 1.14新增的优化方式 ...

  6. 【Flink】FLink PipelineExecutorFactory 基于工厂模式的任务提交与SPI机制

    1.概述 转载: Flink1.10基于工厂模式的任务提交与SPI机制 Flink任务执行模式包含了yarn-session.standalone.per-job.local, 在1.10中又增加k8 ...

  7. 【Flink】Flink 没有keyBy 某个 subTask 没有数据

    文章目录 1.概述 M.扩展 1.概述 一个flink程序,如下,但是总共100多个task,然后只有一个没有数据. 第一怀疑是不是keyBy问题,上述看错了,然后以为有keyBy 然后参考文章:[F ...

  8. 【Flink】Flink SQL 报错 ClassCastException: VarCharType cannot be cast to RowType

    文章目录 1.概述 1.1 实体类 1.概述 背景参考:[Flink]FLink SQL 如何使用嵌套格式的Schema 我想要实现通过flink table api来实现: select * fro ...

  9. 【flink】flink 报错 key group from 44 to 45 does not contain 4

    文章目录 1.概述 本文为博主九师兄(QQ:541711153 欢迎来探讨技术)原创文章,未经允许博主不允许转载. 1.概述 此问题和一个问题很相似:[Flink]Flink KeyGroupRang ...

最新文章

  1. 2018半年总结:走过的路
  2. 两行代码搞定iOS自定义HUD风格动画弹窗(支持选择记录) - SKChoosePopView的使用和实现思路
  3. 棱形旋转c语言程序_C 语言时隔 5 年重回巅峰,这 20 个热门项目拿去练手!
  4. 【leetcode】Linked List Cycle I II
  5. 使用DDMS中的内存监测工具Heap来优化内存
  6. ubuntu 查看串口,设置串口权限
  7. linux学习——大话linux网络
  8. 概率统计:第四章 随机变量的数字特征
  9. 计算机网络 --- 数据链路层aloha协议
  10. JS学习--Number对象
  11. javascript数组对象
  12. G - 数据结构实验之链表五:单链表的拆分
  13. 关闭smartview 版本更新提示
  14. C++名称查找与ADL
  15. 程序员应该坚持写技术博客
  16. 东北大学oj平台python答案_你觉得东北大学的Python考试怎么样?
  17. 阿里云香港服务器配置选择帮助文档(超详细)
  18. 2020年是走前端还是走后端好,前端又有哪些优势呢?
  19. 封装自己的js库(二)---仿照JQuery
  20. 【C语言语法】表达式与语句的区别与联系

热门文章

  1. 隔空互撕!李想炮轰团车造车是“骗子”,团车CEO回怼:别把自己当先知
  2. 微信公布7月朋友圈十大谣言 包括“奥运冠军杨倩被奖励1600万”等
  3. 拉勾发布互联网人薪资报告 2021开年薪资环比增长7%
  4. 董明珠为什么做不好手机?
  5. 荣耀法定代表人由饶俊祥变更为万飚 注册资本增长2973%
  6. 华为郭平:很愿意使用高通芯片制造手机
  7. 美团与饿了么“鸡同鸭讲”后,又可以通过设置继续使用支付宝了?
  8. 富士康工业互联:生产口罩优先用于内部防疫 预计对经营业绩影响较小
  9. 可以飞的电动汽车,波音与保时捷要合作开发了
  10. 马云:不能把孩子放在温室里,光给孩子知识是不够的