Flink自定义Source与Sink

User-defined Sources & sinks
    Dynamic tables 是Flink Table & SQL API的核心概念,对于处理有界与无界数据采用了统一的方式。
    Dynamic tables 是一个逻辑概念,Flink自己不拥有数据。相反,dynamic table是被存储在外部系统(databases,key-value,消息队列)或者文件
    Dynamic sources 从外部读取数据,和 Dynamic sink 被用于写数据到外部系统。在这个文档中,sources 和 sinks被归为connector.
    Flink 提供了预定义的 connector,如 kafka ,hive 与不同的文件系统。
    这章节,聚焦如何开发一个通用的,用户自定义的connector
    *** 新的 table Sources 和 table sink接口已经介绍在Flink1.11 part of FLIP-95。Factory 接口已经重新构建了。如果必要,查看 old table sources 和 sinks页。
        这些接口后向支持兼容

Overview
在很多案例中,实现者不需要创建一个新的connector从scratch,而可能是去显示的修改一个存在的connector或者hook一个存在stack中。在其他的案例中,实现者可能去创建一个特定的connector。
这个部分帮助解决这两种案例。解析了通用的table connector的结构,从 api的定义到 集群中执行的代码
这个箭头展示了对象如何转换成其他对象,从一个stage到下一个stage在转换处理期间

Metadata 
    Table API 与 SQL是定义的API。Metadata包含声明的tables。因此,执行 create table语法时,将导致目标catalog上的metadate更新。
    对于大多catalog实现来说,在外部系统的物理数据不会因为这些操作进行修改。Connector-specific依赖也没有出现在classpath中。定义在with语法中的,即不进行验证,也不进行解释
    dynamic tables的metadata(通过DDL创建或者被catalog提供的)代表 catalogTable实例。表名将被解析进catalogTable内部当必要的时候。

Planning
    当进入到planning和优化table程序时,catalogTable需要被解析成 DynamicTableSource(查询时,select )和DynamicTableSink(写入时,insert into)
    DynamicTableSourceFactory 和 DynamicTableSinkFactory 提供 connector-specific逻辑,把catalogTable的metadata转换成 DynamicTableSource和DynamicTableSink。
    在多数这类案例中,factory的主要功能是去验证 options(如 'port'='5022'),配置编码与解码格式(如果需要),创建参数化的table connector实例。
    默认,DynamicTableSourceFactory 和 DynamicTableSinkFactory是通过Java的SPI去发现的。Connector的 option('connector'='custom')必须满足factory的验证符
    虽然可能不出现在类名中,DynamicTableSource和DynamicTableSink也能够被看成有状态的factorise,最终产生真实的运行环境来读取与写入数据
    Planner使用source和sink实例去执行connetor-specific 双向连接直到一个理想的逻辑计划被发现。依靠可选的声明的接口(SupportsProjectPushDown or SupportsOverwrite),
    planner可能对实例进行修改,变动这个生成的运行环境的实现
    
Runtime

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值