开发者社区> 问答> 正文

FlinkSQL Upsert/Retraction 写入 MySQL 的源代码在哪里呢?

JDBCUpsertTableSink 按照 Upsert 的方式处理,实际执行的 SQL 语句是 INSERT INTO ON DUPLICATE KEY 吗? 这个在源代码哪个地方呢?*来自志愿者整理的FLINK邮件归档

展开
收起
又出bug了-- 2021-12-03 17:33:16 691 0
1 条回答
写回答
取消 提交回答
  • 这是query是会一个会产生retract stream的query,可以简单理解成每条kafka的数据过来会产生两条记录,但是最终写入下游的系统 需要看下游的系统支持和实现的sink(现在有三种sink AppendStreamSink, UpsertStreamSink, RetractStreamSink),现有的sink中,kafka是实现的AppendStreamSink,所以只支持insert 的记录,不支持retract. 你用DDL声明的mysql表,对应的jdbc sink 是JDBCUpsertTableSink,所以会按照Upsert的逻辑处理, 也不支持retract,不带 group by时无法推导出query的 unique key,没法做按照unique key的更新, 只需要将 query的 key (你这里是group by 后的字段)和db中主键保持一致即可*来自志愿者整理的FLINK邮件归档

    2021-12-03 18:01:19
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
搭建电商项目架构连接MySQL 立即下载
搭建4层电商项目架构,实战连接MySQL 立即下载
PolarDB MySQL引擎重磅功能及产品能力盛大发布 立即下载

相关镜像