This is an automated email from the ASF dual-hosted git repository.

davidzollo 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 754c4b96b6 [Docs][Connector-V2] Improve Hudi sink documentation 
(#11701)
754c4b96b6 is described below

commit 754c4b96b675630b38677cad566eaa4b21530d61
Author: Daniel Carter <[email protected]>
AuthorDate: Mon Aug 10 14:57:53 2026 +0800

    [Docs][Connector-V2] Improve Hudi sink documentation (#11701)
    
    Co-authored-by: DanielCarter-stack 
<[email protected]>
---
 docs/en/connectors/sink/Hudi.md | 88 +++++++++++++++++++++++++----------------
 1 file changed, 53 insertions(+), 35 deletions(-)

diff --git a/docs/en/connectors/sink/Hudi.md b/docs/en/connectors/sink/Hudi.md
index 857b56069d..85d89f05bc 100644
--- a/docs/en/connectors/sink/Hudi.md
+++ b/docs/en/connectors/sink/Hudi.md
@@ -25,38 +25,40 @@ The SeaTunnel Hudi sink writes Hudi data files and 
`.hoodie` metadata, but it do
 
 Base configuration:
 
-|            name            |  type   | required | default value              
 |
-|----------------------------|---------|----------|-----------------------------|
-| table_dfs_path             | string  | yes      | -                          
 |
-| conf_files_path            | string  | no       | -                          
 |
-| table_list                 | Array   | no       | -                          
 |
-| schema_save_mode           | enum    | no       | 
CREATE_SCHEMA_WHEN_NOT_EXIST|
-| data_save_mode             | enum    | no       | APPEND_DATA                
 |
-| common-options             | Config  | no       | -                          
 |
+|            name            |  type   | required | default value              
  | description |
+|----------------------------|---------|----------|------------------------------|-------------|
+| table_dfs_path             | string  | yes      | -                          
  | Root path for Hudi table data and metadata. |
+| conf_files_path            | string  | no       | -                          
  | Semicolon-separated local paths to HDFS client configuration files. |
+| table_list                 | Array   | no       | -                          
  | Per-table settings for multi-table jobs. |
+| schema_save_mode           | enum    | no       | 
CREATE_SCHEMA_WHEN_NOT_EXIST | How to handle the target schema before the job 
starts. |
+| data_save_mode             | enum    | no       | APPEND_DATA                
  | How to handle existing table data before the job starts. |
+| common-options             | Config  | no       | -                          
  | [Common sink options](../common-options/sink-common-options.md). |
 
 Table list configuration:
 
-|       name                 |  type  | required | default value |
-|----------------------------|--------|----------|---------------|
-| table_name                 | string | yes      | -             |
-| database                   | string | no       | default       |
-| table_type                 | enum   | no       | COPY_ON_WRITE |
-| op_type                    | enum   | no       | insert        |
-| record_key_fields          | string | no       | -             |
-| partition_fields           | string | no       | -             |
-| precombine_field           | string | no       | -             |
-| batch_interval_ms          | Int    | no       | 1000          |
-| batch_size                 | Int    | no       | 1000          |
-| insert_shuffle_parallelism | Int    | no       | 2             |
-| upsert_shuffle_parallelism | Int    | no       | 2             |
-| min_commits_to_keep        | Int    | no       | 20            |
-| max_commits_to_keep        | Int    | no       | 30            |
-| index_type                 | enum   | no       | BLOOM         |
-| index_class_name           | string | no       | -             |
-| record_byte_size           | Int    | no       | 1024          |
-| cdc_enabled                | boolean| no       | false         |
-
-Note: When this configuration corresponds to a single table, you can flatten 
the configuration items in table_list to the outer layer.
+|       name                 |  type  | required | default value | description 
|
+|----------------------------|--------|----------|---------------|-------------|
+| table_name                 | string | yes      | -             | Target Hudi 
table name. |
+| database                   | string | no       | default       | Target Hudi 
database name. |
+| table_type                 | enum   | no       | COPY_ON_WRITE | Hudi table 
type: `COPY_ON_WRITE` or `MERGE_ON_READ`. |
+| op_type                    | enum   | no       | INSERT        | Write 
operation: `INSERT`, `UPSERT`, or `BULK_INSERT`. |
+| record_key_fields          | string | no       | -             | Field or 
fields used to build the Hudi record key; required for `UPSERT`. |
+| partition_fields           | string | no       | -             | Field or 
fields used to build the partition path. |
+| precombine_field           | string | no       | -             | Field used 
to resolve multiple updates to the same record. |
+| batch_interval_ms          | Int    | no       | 1000          | Currently 
unused; flushes are triggered only by `batch_size` or a checkpoint. |
+| batch_size                 | Int    | no       | 1000          | Maximum 
buffered rows before a flush. |
+| insert_shuffle_parallelism | Int    | no       | 2             | Shuffle 
parallelism for insert operations. |
+| upsert_shuffle_parallelism | Int    | no       | 2             | Shuffle 
parallelism for upsert operations. |
+| min_commits_to_keep        | Int    | no       | 20            | Minimum 
number of commits retained during cleaning. |
+| max_commits_to_keep        | Int    | no       | 30            | Maximum 
number of commits retained during cleaning. |
+| index_type                 | enum   | no       | BLOOM         | Hudi index 
type: `BLOOM`, `SIMPLE`, or `GLOBAL_BLOOM`. |
+| index_class_name           | string | no       | -             | Fully 
qualified custom Hudi index class name. |
+| record_byte_size           | Int    | no       | 1024          | Estimated 
average record size in bytes. |
+| cdc_enabled                | boolean| no       | false         | Persist 
Hudi CDC change-log data when enabled. |
+
+Note: When this configuration corresponds to a single table, you can flatten 
the configuration items in `table_list` to the outer layer. For a multi-table 
job, keep table-specific options inside each `table_list` entry; 
`table_dfs_path`, `conf_files_path`, `schema_save_mode`, and `data_save_mode` 
remain at the sink level.
+
+`record_key_fields` is required for `UPSERT` (validated at startup) and for 
`BULK_INSERT` (currently unvalidated — omitting it causes a 
`NullPointerException` during writing, not a config-time error). For CDC input, 
the upstream record must contain the fields used by `record_key_fields`; set 
`cdc_enabled = true` only when the Hudi CDC change log is required.
 
 ### table_name [string]
 
@@ -136,12 +138,12 @@ Note: When this configuration corresponds to a single 
table, you can flatten the
 
 ### schema_save_mode [Enum]
 
-Before the synchronous task is turned on, different treatment schemes are 
selected for the existing surface structure of the target side.  
-Option introduction:  
-`RECREATE_SCHEMA` :Will create when the table does not exist, delete and 
rebuild when the table is saved        
-`CREATE_SCHEMA_WHEN_NOT_EXIST` :Will Created when the table does not exist, 
skipped when the table is saved        
-`ERROR_WHEN_SCHEMA_NOT_EXIST` :Error will be reported when the table does not 
exist  
-`IGNORE` :Ignore the treatment of the table
+Controls how the connector handles the target table schema before the job 
starts:
+
+- `RECREATE_SCHEMA`: Create the table if it does not exist; otherwise delete 
and recreate it.
+- `CREATE_SCHEMA_WHEN_NOT_EXIST`: Create the table only when it does not exist.
+- `ERROR_WHEN_SCHEMA_NOT_EXIST`: Fail when the table does not exist.
+- `IGNORE`: Do not perform schema handling.
 
 ### data_save_mode [Enum]
 
@@ -263,6 +265,22 @@ sink {
 }
 ```
 
+### S3 Storage
+
+The sink can write to an S3-compatible path. The `connector-hudi` module does 
not depend on `hadoop-aws`/`aws-java-sdk`, so resolving the `s3a://` scheme 
requires placing `hadoop-aws` and the matching AWS SDK bundle (or SeaTunnel's 
`seatunnel-hadoop-aws` jar) into `$SEATUNNEL_HOME/lib` (or the connector's 
plugin lib directory) before the example below will work. After that, provide 
the required Hadoop filesystem settings through `conf_files_path` (or the 
runtime classpath), then use an ` [...]
+
+```hocon
+sink {
+  Hudi {
+    table_dfs_path = "s3a://hudi/"
+    conf_files_path = "/etc/hadoop/core-site.xml;/etc/hadoop/hdfs-site.xml"
+    table_name = "st_test"
+    op_type = "UPSERT"
+    record_key_fields = "id"
+  }
+}
+```
+
 ## Changelog
 
 <ChangeLog />

Reply via email to