This is an automated email from the ASF dual-hosted git repository.
github-merge-queue[bot] pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/seatunnel.git
The following commit(s) were added to refs/heads/dev by this push:
new 84e43a95b4 [Docs][Connector-V2] Improve InfluxDB Greenplum Mqtt and
Aerospike connector docs (#11722)
84e43a95b4 is described below
commit 84e43a95b469b2021b0590e0bbac703bcc9cdcf3
Author: Daniel Carter <[email protected]>
AuthorDate: Mon Sep 7 05:47:37 2026 +0000
[Docs][Connector-V2] Improve InfluxDB Greenplum Mqtt and Aerospike
connector docs (#11722)
Co-authored-by: DanielCarter-stack
<[email protected]>
---
docs/en/connectors/sink/Aerospike.md | 42 ++++++++++++++++++++++
docs/en/connectors/sink/Greenplum.md | 8 ++---
docs/en/connectors/sink/InfluxDB.md | 37 +++++++++++++++++++
docs/en/connectors/source/Greenplum.md | 14 ++++----
docs/en/connectors/source/InfluxDB.md | 66 ++++++++++++++++++++++++++++++++++
docs/en/connectors/source/Mqtt.md | 34 +++++++++---------
docs/zh/connectors/source/Greenplum.md | 8 ++---
7 files changed, 177 insertions(+), 32 deletions(-)
diff --git a/docs/en/connectors/sink/Aerospike.md
b/docs/en/connectors/sink/Aerospike.md
index 6442da5356..a1f25836d4 100644
--- a/docs/en/connectors/sink/Aerospike.md
+++ b/docs/en/connectors/sink/Aerospike.md
@@ -154,6 +154,48 @@ sink {
}
```
+### Stream CDC Records Into Aerospike With `kv` Format
+
+For streaming jobs (for example MySQL CDC), use `data_format = "kv"` to write
each configured
+field as an independent Aerospike bin. This makes downstream lookups cheaper
because each field
+is stored separately instead of being packed into a single JSON or map bin.
+
+```hocon
+env {
+ parallelism = 2
+ job.mode = "STREAMING"
+ checkpoint.interval = 10000
+}
+
+source {
+ Mysql-CDC {
+ url = "jdbc:mysql://127.0.0.1:3306/seatunnel"
+ username = "root"
+ password = "******"
+ table-names = ["seatunnel.user"]
+ }
+}
+
+sink {
+ Aerospike {
+ host = "aerospike-host"
+ port = 3000
+ namespace = "test"
+ set = "user"
+ key = "id"
+ data_format = "kv"
+ write_timeout = 500
+ schema {
+ field {
+ id = "INTEGER"
+ name = "STRING"
+ email = "STRING"
+ }
+ }
+ }
+}
+```
+
## Changelog
<ChangeLog />
diff --git a/docs/en/connectors/sink/Greenplum.md
b/docs/en/connectors/sink/Greenplum.md
index e87ca40f30..374f648e67 100644
--- a/docs/en/connectors/sink/Greenplum.md
+++ b/docs/en/connectors/sink/Greenplum.md
@@ -51,14 +51,14 @@ Only Greenplum-specific commonly used options are listed
here. Other JDBC sink o
| Name | Type | Required | Default | Description |
|------|------|----------|---------|-------------|
-| url | String | Yes | - | JDBC connection URL. Use
`jdbc:postgresql://host:port/database` with PostgreSQL driver, or
`jdbc:pivotal:greenplum://host:port;DatabaseName=database` with Greenplum
native driver. |
+| url | String | Yes | - | JDBC connection URL. Use
`jdbc:postgresql://host:port/database` with the PostgreSQL driver, or
`jdbc:pivotal:greenplum://host:port;DatabaseName=database` with the Greenplum
native driver. |
| driver | String | Yes | - | JDBC driver class name, usually
`org.postgresql.Driver` or `com.pivotal.jdbc.GreenplumDriver`. |
| username | String | No | - | Greenplum username. |
| password | String | No | - | Greenplum password. |
-| query | String | No | - | SQL used to write upstream rows, for example
`insert into sink(age, name) values(?, ?)`. `query` has higher priority than
generated sink SQL. |
-| batch_size | Int | No | 1000 | Maximum records buffered before flushing to
Greenplum. |
+| query | String | No | - | SQL used to write upstream rows, for example
`insert into sink(age, name) values(?, ?)`. `query` has higher priority than
generated sink SQL. When unset, the sink expects `generate_sink_sql = true`
together with `database` and `table`. |
+| batch_size | Int | No | 1000 | Maximum records buffered before flushing to
Greenplum. The buffer is also flushed at each checkpoint. |
| max_retries | Int | No | 0 | Retry times after `executeBatch` fails. |
-| generate_sink_sql | Boolean | No | false | Generate insert SQL automatically
from `database` and `table`. |
+| generate_sink_sql | Boolean | No | false | Generate the insert SQL
automatically from `database` and `table`. When `true`, the column order must
match the upstream schema. |
| database | String | No | - | Database name used when `generate_sink_sql =
true`. |
| table | String | No | - | Target table name used when `generate_sink_sql =
true`. |
| common-options | | No | - | Sink plugin common parameters, please refer to
[Sink Common Options](../common-options/sink-common-options.md) for details. |
diff --git a/docs/en/connectors/sink/InfluxDB.md
b/docs/en/connectors/sink/InfluxDB.md
index cabe7cdeb6..f849eee7ca 100644
--- a/docs/en/connectors/sink/InfluxDB.md
+++ b/docs/en/connectors/sink/InfluxDB.md
@@ -239,6 +239,43 @@ sink {
}
```
+### Per-Table Measurement With Replicated Writers
+
+Use `multi_table_sink_replica` to spread multi-table writes across more writer
instances when
+the upstream emits a large number of tables.
+
+```hocon
+env {
+ parallelism = 2
+ job.mode = "STREAMING"
+ checkpoint.interval = 10000
+}
+
+source {
+ Mysql-CDC {
+ url = "jdbc:mysql://127.0.0.1:3306/seatunnel"
+ username = "root"
+ password = "******"
+ table-names = ["seatunnel.role", "seatunnel.user", "galileo.Bucket"]
+ }
+}
+
+sink {
+ InfluxDB {
+ url = "http://influxdb-host:8086"
+ database = "test"
+ key_time = "time"
+ key_tags = ["label"]
+ batch_size = 2048
+ max_retries = 3
+ retry_backoff_multiplier_ms = 100
+ max_retry_backoff_ms = 5000
+ write_timeout = 10
+ multi_table_sink_replica = 2
+ }
+}
+```
+
## Changelog
<ChangeLog />
diff --git a/docs/en/connectors/source/Greenplum.md
b/docs/en/connectors/source/Greenplum.md
index 15557903ca..beee23ce15 100644
--- a/docs/en/connectors/source/Greenplum.md
+++ b/docs/en/connectors/source/Greenplum.md
@@ -56,16 +56,16 @@ Only Greenplum-specific commonly used options are listed
here. Other JDBC source
| Name | Type | Required | Default | Description |
|------|------|----------|---------|-------------|
-| url | String | Yes | - | JDBC connection URL. Use
`jdbc:postgresql://host:port/database` with PostgreSQL driver, or
`jdbc:pivotal:greenplum://host:port;DatabaseName=database` with Greenplum
native driver. |
+| url | String | Yes | - | JDBC connection URL. Use
`jdbc:postgresql://host:port/database` with the PostgreSQL driver, or
`jdbc:pivotal:greenplum://host:port;DatabaseName=database` with the Greenplum
native driver. |
| driver | String | Yes | - | JDBC driver class name, usually
`org.postgresql.Driver` or `com.pivotal.jdbc.GreenplumDriver`. |
| username | String | No | - | Greenplum username. |
| password | String | No | - | Greenplum password. |
-| query | String | Yes | - | SQL used to read data. You can select only the
columns you need. |
-| partition_column | String | No | - | Column used to split data for parallel
reading. |
-| partition_lower_bound | Long | No | - | Lower bound of `partition_column`.
If not set, SeaTunnel queries the minimum value. |
-| partition_upper_bound | Long | No | - | Upper bound of `partition_column`.
If not set, SeaTunnel queries the maximum value. |
-| partition_num | Int | No | job parallelism | Number of source splits. |
-| split.string_split_mode | String | No | sample | String split algorithm. Use
`charset_based` when the split column contains printable ASCII strings and you
want deterministic range-like splitting. |
+| query | String | Yes | - | SQL used to read data. Select only the columns
you need; the source uses the SELECT column list as the output schema. |
+| partition_column | String | No | - | Column used to split data for parallel
reading. Can be numeric or string. Numeric columns are split into
`partition_num` numeric ranges; string columns are split by hash
(`split.string_split_mode = sample`, the default) or by lexicographic range
(`split.string_split_mode = charset_based`). |
+| partition_lower_bound | String | No | - | Lower bound of `partition_column`.
If not set, SeaTunnel queries the minimum value. |
+| partition_upper_bound | String | No | - | Upper bound of `partition_column`.
If not set, SeaTunnel queries the maximum value. |
+| partition_num | Int | No | 10 | Number of source splits. Each split issues a
range query for numeric (and `charset_based` string) columns, or a hash-modulo
predicate for `sample` string columns. Defaults to `10` when unset; tune upward
to match the job's parallelism if needed. |
+| split.string_split_mode | String | No | sample | String split algorithm.
`sample` estimates splits from a sampled value list; `charset_based` performs
deterministic range-like splitting and is preferred when the split column
contains printable ASCII strings. |
| common-options | | No | - | Source plugin common parameters, please refer to
[Source Common Options](../common-options/source-common-options.md) for
details. |
### Tips
diff --git a/docs/en/connectors/source/InfluxDB.md
b/docs/en/connectors/source/InfluxDB.md
index 2ad1633331..c3d6581ce1 100644
--- a/docs/en/connectors/source/InfluxDB.md
+++ b/docs/en/connectors/source/InfluxDB.md
@@ -140,6 +140,21 @@ Number of query splits. Configure it together with
`lower_bound`, `upper_bound`,
`split_column`. Make sure `upper_bound - lower_bound` is divisible by
`partition_num`; otherwise
the query results overlap.
+### where [string]
+
+:::caution Reserved option
+
+The current split logic reads the lowercase `where` keyword directly from the
`sql` option.
+Setting `where` has no effect on the generated split queries — put the filter
inside `sql`
+instead, for example `select * from test where age > 0`. The split parser is
case-sensitive on
+the `where` keyword.
+
+This option is kept in the option list only because the validation rule
+(`InfluxDBSourceFactory.optionRule()`) still references it for backward
compatibility; the
+runtime split query generator does not read it.
+
+:::
+
### epoch [string]
Time precision returned by InfluxDB. Valid values include `H`, `m`, `s`, `MS`,
`u`, and `n`. The
@@ -265,6 +280,57 @@ sink {
}
```
+### Bounded Read With Parallel Splits
+
+The InfluxDB source is bounded by the `sql` result. To chain it to a streaming
sink without
+losing rows, set a finite `partition_num` and let SeaTunnel checkpoint the
offsets per split.
+
+```hocon
+env {
+ parallelism = 2
+ job.mode = "BATCH"
+ checkpoint.interval = 10000
+}
+
+source {
+ InfluxDB {
+ url = "http://influxdb-host:8086"
+ sql = "select label, c_string, c_double, c_bigint, c_float, c_int,
c_smallint, c_boolean from source"
+ database = "test"
+ lower_bound = 0
+ upper_bound = 99
+ partition_num = 4
+ split_column = "c_int"
+ query_timeout_sec = 10
+ connect_timeout_ms = 20000
+ schema {
+ fields {
+ label = STRING
+ c_string = STRING
+ c_double = DOUBLE
+ c_bigint = BIGINT
+ c_float = FLOAT
+ c_int = INT
+ c_smallint = SMALLINT
+ c_boolean = BOOLEAN
+ time = BIGINT
+ }
+ }
+ }
+}
+
+sink {
+ InfluxDB {
+ url = "http://influxdb-host:8086"
+ database = "test"
+ measurement = "sink"
+ key_time = "time"
+ key_tags = ["label"]
+ batch_size = 1024
+ }
+}
+```
+
## Changelog
<ChangeLog />
diff --git a/docs/en/connectors/source/Mqtt.md
b/docs/en/connectors/source/Mqtt.md
index 0a1faf9129..e82e7edeb1 100644
--- a/docs/en/connectors/source/Mqtt.md
+++ b/docs/en/connectors/source/Mqtt.md
@@ -37,23 +37,23 @@ The source uses MQTT auto-reconnect. If the client remains
disconnected longer t
## Options
-| name | type | required | default value |
-|---------------------|---------|----------|---------------|
-| url | string | yes | - |
-| topic | string | yes | - |
-| schema | config | yes | - |
-| username | string | no | - |
-| password | string | no | - |
-| qos | int | no | 1 |
-| format | string | no | json |
-| field_delimiter | string | no | , |
-| client_id | string | no | - |
-| clean_session | boolean | no | true |
-| connection_timeout | int | no | 30 |
-| keep_alive_interval | int | no | 60 |
-| reconnect_timeout | int | no | 120 |
-| max_queue_size | int | no | 1000 |
-| common-options | | no | - |
+| name | type | required | default value | description
|
+|---------------------|---------|----------|---------------|------------------------------------------------------------------------------------------------------------------------|
+| url | string | yes | - | MQTT broker URL,
e.g. `tcp://localhost:1883`.
|
+| topic | string | yes | - | MQTT topic to
subscribe messages from.
|
+| schema | config | yes | - | Output schema of
the source. See [Schema
Feature](../../introduction/concepts/schema-feature.md). |
+| username | string | no | - | MQTT broker
authentication username. Leave unset for anonymous access.
|
+| password | string | no | - | MQTT broker
authentication password. Leave unset for anonymous access.
|
+| qos | int | no | 1 | MQTT subscribe
QoS level. `0` is at-most-once, `1` is at-least-once.
|
+| format | string | no | json | Message
deserialization format: `json` or `text`.
|
+| field_delimiter | string | no | , | Field delimiter
for `text` format. Only used when `format=text`.
|
+| client_id | string | no | - | MQTT client id.
Required when `clean_session=false`; generated automatically otherwise.
|
+| clean_session | boolean | no | true | Whether to use a
clean MQTT session.
|
+| connection_timeout | int | no | 30 | MQTT connection
timeout in seconds.
|
+| keep_alive_interval | int | no | 60 | MQTT keep alive
interval in seconds.
|
+| reconnect_timeout | int | no | 120 | Maximum seconds
to wait for MQTT auto-reconnect before failing the source.
|
+| max_queue_size | int | no | 1000 | Maximum number of
MQTT messages buffered in memory before deserialization.
|
+| common-options | | no | - | Source plugin
common parameters. See [Source Common
Options](../common-options/source-common-options.md) for details. |
### url [string]
diff --git a/docs/zh/connectors/source/Greenplum.md
b/docs/zh/connectors/source/Greenplum.md
index 93e1fb3cd5..feefaa9fd7 100644
--- a/docs/zh/connectors/source/Greenplum.md
+++ b/docs/zh/connectors/source/Greenplum.md
@@ -61,10 +61,10 @@ import ChangeLog from '../changelog/connector-jdbc.md';
| username | String | 否 | - | Greenplum 用户名。 |
| password | String | 否 | - | Greenplum 密码。 |
| query | String | 是 | - | 读取数据的 SQL,可以只选择需要的字段。 |
-| partition_column | String | 否 | - | 用于并行拆分读取的字段。 |
-| partition_lower_bound | Long | 否 | - | `partition_column` 的下界;不配置时 SeaTunnel
会查询最小值。 |
-| partition_upper_bound | Long | 否 | - | `partition_column` 的上界;不配置时 SeaTunnel
会查询最大值。 |
-| partition_num | Int | 否 | 作业并行度 | 拆分数量。 |
+| partition_column | String | 否 | - | 用于并行拆分读取的字段,可以是数值或字符串类型。数值列按
`partition_num` 切分为数值范围;字符串列在 `split.string_split_mode = sample`(默认)下按哈希拆分,在
`charset_based` 下按字典序范围拆分。 |
+| partition_lower_bound | String | 否 | - | `partition_column` 的下界;不配置时
SeaTunnel 会查询最小值。 |
+| partition_upper_bound | String | 否 | - | `partition_column` 的上界;不配置时
SeaTunnel 会查询最大值。 |
+| partition_num | Int | 否 | 10 | 拆分数量。数值列(以及 `charset_based`
字符串列)每个拆分使用范围查询;`sample` 字符串列每个拆分使用哈希取模谓词。未设置时默认为 `10`,可按需上调以匹配作业并行度。 |
| split.string_split_mode | String | 否 | sample | 字符串拆分算法。拆分字段是可打印 ASCII
字符串,并且希望使用确定性的范围类拆分时,可以配置为 `charset_based`。 |
| common-options | | 否 | - | 源插件通用参数,请参考
[源通用选项](../common-options/source-common-options.md)。 |