Flink 1.10 SQL CONNECTOR开发

Flink 1.10提供了丰富的connector组件帮助用户连接外部系统。但是很多时候原生的connector并不能够完全满足用户的需求,因此需要自定义开发connector组件。本文介绍如何进行Flink1.10 SQL CONNECTOR的开发工作。Flink 1.10通过SPI去加载不同的factory,实现了CONNECTOR的统一。SPI机制SPI,全称为Service Provider Interface,是Java提供的一套用于第三方实现或拓展的API。基于工厂模式的任务提交pu
摘要由CSDN通过智能技术生成

Flink 1.10提供了丰富的connector组件帮助用户连接外部系统。但是很多时候原生的connector并不能够完全满足用户的需求,因此需要自定义开发connector组件。本文介绍如何进行Flink1.10 SQL CONNECTOR的开发工作。
Flink 1.10通过SPI去加载不同的factory,实现了CONNECTOR的统一。

SPI机制

SPI,全称为Service Provider Interface,是Java提供的一套用于第三方实现或拓展的API。
SPI原理

基于工厂模式的任务提交

public interface PipelineExecutor{
   
		/**
		 * 执行任务
		 */
		CompletableFuture<JobClient> execute(final Pipeline pipeline, final Configuration configuration)throws Exception;
}

PipelineExecutor 提供多种实现方式

  • RemoteExecutor(standalone)
  • LocalExecutor (local)
  • YanrJobClusterExecutor (per-job)
  • YarnSessionClusterExecutor (yarn-session)

支持用户在多种场景下提交flink任务。

Flink 提供PipelineExecutorServiceLoader接口,其中实现类DefaultExecutorServiceLoader支持通过名称去加载类。它的原理就是通过SPI机制去查找flink所提供的所有的工厂类,找到合适的类,进行加载。

基于工厂模式的SQL CONNECTOR设计

Flink 1.10提供SPI方式支持与connector进行交互,Flink会去扫描包中resources/META-INF/services目录下的org.apache.flink.table.factories.TableFactory,获取所有Factory类,根据sql中with传进来的参数(k=v)进行匹配,找到匹配到的那个Factory类,如果没有找到的话,则会报错。
配置工厂类的内容
配置工厂类的文件

public class SqlHdfsSinkFactory implements StreamTableSinkFactory<Row> {
   

    @Override
    public List
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值