从 https://github.com/apache/seatunnel/issues/1608 我们添加了 Connector V2 特性。 Connector V2 是基于SeaTunnel Connector API接口定义的连接器。不像Connector V1, V2 支持如下特性:
Source connector有一些公共的核心特性,每个source connector在不同程度上支持它们。
如果数据源中的每条数据仅由源向下游发送一次,我们认为该source connector支持精确一次(exactly-once)。
在SeaTunnel中, 我们可以保存读取的 Split 和它的 offset(当时读取的数据被分割时的位置,例如行号, 字节大小, 偏移量等) 作为检查点时的 StateSnapshot 。 如果任务重新启动, 我们会得到最后的 StateSnapshot 然后定位到上次读取的 Split 和 offset,继续向下游发送数据。
例如 File
, Kafka
。
如果连接器支持仅从数据源读取指定列(请注意,如果先读取所有列,然后通过元数据(schema)过滤不需要的列,则此方法不是真正的列投影)
例如 JDBCSource
可以使用sql定义读取列。
KafkaSource
从主题中读取所有内容然后使用schema
过滤不必要的列, 这不是真正的列投影
。
批处理作业模式,读取的数据是有界的,当所有数据读取完成后作业将停止。
流式作业模式,数据读取无界,作业永不停止。
并行执行的Source Connector支持配置 parallelism
,每个并发会创建一个任务来读取数据。 在Parallelism Source Connector中,source会被分割成多个split,然后枚举器会将 split 分配给 SourceReader 进行处理。
用户可以配置分割规则。
支持在一个 SeaTunnel 作业中读取多个表。
Sink connector有一些公共的核心特性,每个sink connector在不同程度上支持它们。
当任意一条数据流入分布式系统时,如果系统在整个处理过程中仅准确处理任意一条数据一次,且处理结果正确,则认为系统满足精确一次一致性。
对于sink connector,如果任何数据只写入目标一次,则sink connector支持精确一次。 通常有两种方法可以实现这一目标:
MySQL
, Kudu
。File
, MySQL
.如果sink connector支持基于主键写入行类型(INSERT/UPDATE_BEFORE/UPDATE_AFTER/DELETE),我们认为它支持cdc(更改数据捕获,change data capture)。