本文主要是介绍Flink自定义sink并支持insert overwrite 功能,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
前言
自定义flink sink,批模式下,有insert overwrite 需求或需要启动任务或任务完成后时,只执行一次某些操作时,则可参考此文章
组件:
flink: 1.15
参考文档:https://nightlies.apache.org/flink/flink-docs-release-1.15/docs/dev/table/sourcessinks/
分析
insert overwrite 即在批模式下 先清除表的数据 再插入
在大数据多并发模式下 只能执行一次清空数据 且需要在执行插入数据之前先清理
在flink 支持的连接器中 只有 hive和文件系统此2中连接器支持insert overwrite功能,可参考他们的实现方式
此处演示例子
source: flink jdbc连接器
sink : 自定义flink jdbc连接器
加工: insert overwrite osd_user_test select * from ods_user
关键点是在 执行 overwrite 语句时 在任务开始前或结束时 清空原表的数据,且此操作只执行一次,不然会有其他并发执行写入数据了 在执行清数据情况造成漏数
查看FileSystem sink的源代码
这篇关于Flink自定义sink并支持insert overwrite 功能的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!