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

wanghailin 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 f1f7c38cce [Docs][connector-sink] add Docs connector v2 sink (#7097)
f1f7c38cce is described below

commit f1f7c38cce07e19ea70a033912ceafaebefdd184
Author: Jast <745925...@qq.com>
AuthorDate: Sat Jul 6 09:59:22 2024 +0800

    [Docs][connector-sink] add Docs connector v2 sink (#7097)
---
 docs/zh/connector-v2/sink/LocalFile.md | 316 +++++++++++++++++++++++++++++++++
 docs/zh/connector-v2/sink/Redis.md     | 157 ++++++++++++++++
 2 files changed, 473 insertions(+)

diff --git a/docs/zh/connector-v2/sink/LocalFile.md 
b/docs/zh/connector-v2/sink/LocalFile.md
new file mode 100644
index 0000000000..53aa0cb480
--- /dev/null
+++ b/docs/zh/connector-v2/sink/LocalFile.md
@@ -0,0 +1,316 @@
+# LocalFile
+
+> 本地文件接收器
+
+## 描述
+
+将数据输出到本地文件。
+
+:::提示
+
+如果你使用的是 spark/flink,为了使用此连接器,你必须确保你的 spark/flink 集群已集成 hadoop。已测试的 hadoop 版本是 
2.x。
+
+如果你使用 SeaTunnel Engine,它会在下载和安装 SeaTunnel Engine 时自动集成 hadoop jar。你可以在 
${SEATUNNEL_HOME}/lib 下检查 jar 包以确认这一点。
+
+:::
+
+## 主要特性
+
+- [x] [精确一次](../../concept/connector-v2-features.md)
+
+默认情况下,我们使用 2PC 提交以确保`精确一次`。
+
+- [x] 文件格式类型
+  - [x] 文本
+  - [x] csv
+  - [x] parquet
+  - [x] orc
+  - [x] json
+  - [x] excel
+  - [x] xml
+  - [x] 二进制
+
+## 选项
+
+|                  名称                   |   类型    | 是否必需 |                    
默认值                     |                               描述                      
          |
+|---------------------------------------|---------|------|--------------------------------------------|-----------------------------------------------------------------|
+| path                                  | string  | 是    | -                   
                       | 目标目录路径                                                 
         |
+| tmp_path                              | string  | 否    | /tmp/seatunnel      
                       | 结果文件将首先写入临时路径,然后使用 `mv` 将临时目录提交到目标目录。                  
         |
+| custom_filename                       | boolean | 否    | false               
                       | 是否需要自定义文件名                                             
         |
+| file_name_expression                  | string  | 否    | "${transactionId}"  
                       | 仅在 custom_filename 为 true 时使用                          
         |
+| filename_time_format                  | string  | 否    | "yyyy.MM.dd"        
                       | 仅在 custom_filename 为 true 时使用                          
         |
+| file_format_type                      | string  | 否    | "csv"               
                       | 文件格式类型                                                 
         |
+| field_delimiter                       | string  | 否    | '\001'              
                       | 仅在 file_format_type 为 text 时使用                         
         |
+| row_delimiter                         | string  | 否    | "\n"                
                       | 仅在 file_format_type 为 text 时使用                         
         |
+| have_partition                        | boolean | 否    | false               
                       | 是否需要处理分区                                               
         |
+| partition_by                          | array   | 否    | -                   
                       | 仅在 have_partition 为 true 时使用                           
         |
+| partition_dir_expression              | string  | 否    | 
"${k0}=${v0}/${k1}=${v1}/.../${kn}=${vn}/" | 仅在 have_partition 为 true 时使用       
                             |
+| is_partition_field_write_in_file      | boolean | 否    | false               
                       | 仅在 have_partition 为 true 时使用                           
         |
+| sink_columns                          | array   | 否    |                     
                       | 当此参数为空时,所有字段都是 sink 列                                  
         |
+| is_enable_transaction                 | boolean | 否    | true                
                       | 是否启用事务                                                 
         |
+| batch_size                            | int     | 否    | 1000000             
                       | 批量大小                                                   
         |
+| compress_codec                        | string  | 否    | none                
                       | 压缩编码                                                   
         |
+| common-options                        | object  | 否    | -                   
                       | 常见选项                                                   
         |
+| max_rows_in_memory                    | int     | 否    | -                   
                       | 仅在 file_format_type 为 excel 时使用                        
         |
+| sheet_name                            | string  | 否    | Sheet${随机数}         
                       | 仅在 file_format_type 为 excel 时使用                        
         |
+| xml_root_tag                          | string  | 否    | RECORDS             
                       | 仅在 file_format 为 xml 时使用                               
         |
+| xml_row_tag                           | string  | 否    | RECORD              
                       | 仅在 file_format 为 xml 时使用                               
         |
+| xml_use_attr_format                   | boolean | 否    | -                   
                       | 仅在 file_format 为 xml 时使用                               
         |
+| parquet_avro_write_timestamp_as_int96 | boolean | 否    | false               
                       | 仅在 file_format 为 parquet 时使用                           
         |
+| parquet_avro_write_fixed_as_int96     | array   | 否    | -                   
                       | 仅在 file_format 为 parquet 时使用                           
         |
+| enable_header_write                   | boolean | 否    | false               
                       | 仅在 file_format_type 为 text,csv 时使用。<br/> 
false:不写入表头,true:写入表头。 |
+| encoding                              | string  | 否    | "UTF-8"             
                       | 仅在 file_format_type 为 json,text,csv,xml 时使用            
         |
+
+### path [string]
+
+目标目录路径是必需的,你可以通过使用 `${database_name}`、`${table_name}` 和 `${schema_name}` 将上游的 
CatalogTable 注入到路径中。
+
+### custom_filename [boolean]
+
+是否自定义文件名
+
+### file_name_expression [string]
+
+仅在 `custom_filename` 为 `true` 时使用
+
+`file_name_expression` 描述将创建到 `path` 中的文件表达式。我们可以在 `file_name_expression` 
中添加变量 `${now}` 或 `${uuid}`,例如 `test_${uuid}_${now}`,`${now}` 表示当前时间,其格式可以通过指定 
`filename_time_format` 选项来定义。
+
+请注意,如果 `is_enable_transaction` 为 `true`,我们将自动在文件名的头部添加 `${transactionId}_`。
+
+### filename_time_format [string]
+
+仅在 `custom_filename` 为 `true` 时使用
+
+当 `file_name_expression` 参数中的格式为 `xxxx-${now}` 时,`filename_time_format` 
可以指定路径的时间格式,默认值为 `yyyy.MM.dd`。常用的时间格式如下所示:
+
+| 符号 |    描述     |
+|----|-----------|
+| y  | 年         |
+| M  | 月         |
+| d  | 日         |
+| H  | 小时 (0-23) |
+| m  | 分钟        |
+| s  | 秒         |
+
+### file_format_type [string]
+
+我们支持以下文件类型:
+
+`text` `csv` `parquet` `orc` `json` `excel` `xml` `binary`
+
+请注意,最终的文件名将以 file_format_type 的后缀结尾,文本文件的后缀是 `txt`。
+
+### field_delimiter [string]
+
+数据行中列之间的分隔符。仅在 `text` 文件格式下需要。
+
+### row_delimiter [string]
+
+文件中行之间的分隔符。仅在 `text` 文件格式下需要。
+
+### have_partition [boolean]
+
+是否需要处理分区。
+
+### partition_by [array]
+
+仅在 `have_partition` 为 `true` 时使用。
+
+基于选定字段进行数据分区。
+
+### partition_dir_expression [string]
+
+仅在 `have_partition` 为 `true` 时使用。
+
+如果指定了 `partition_by`,我们将基于分区信息生成相应的分区目录,最终文件将放置在分区目录中。
+
+默认的 `partition_dir_expression` 是 
`${k0}=${v0}/${k1}=${v1}/.../${kn}=${vn}/`。`k0` 是第一个分区字段,`v0` 是第一个分区字段的值。
+
+### is_partition_field_write_in_file [boolean]
+
+仅在 `have_partition` 为 `true` 时使用。
+
+如果 `is_partition_field_write_in_file` 为 `true`,分区字段及其值将写入数据文件。
+
+例如,如果你想写入一个 Hive 数据文件,其值应该为 `false`。
+
+### sink_columns [array]
+
+需要写入文件的列,默认值为从 `Transform` 或 `Source` 获取的所有列。字段的顺序决定了实际写入文件的顺序。
+
+### is_enable_transaction [boolean]
+
+如果 `is_enable_transaction` 为 true,我们将确保数据在写入目标目录时不会丢失或重复。
+
+请注意,如果 `is_enable_transaction` 为 true,我们将自动在文件名前添加 `${transactionId}_`。
+
+目前仅支持 `true`。
+
+### batch_size [int]
+
+文件中的最大行数。对于 SeaTunnel Engine,文件中的行数由 `batch_size` 和 `checkpoint.interval` 
共同决定。如果 `checkpoint.interval` 的值足够大,sink writer 将在文件中的行数超过 `batch_size` 
时写入文件。如果 `checkpoint.interval` 很小,当触发新检查点时,sink writer 将创建一个新文件。
+
+### compress_codec [string]
+
+文件的压缩编码,支持的压缩编码如下所示:
+
+- txt: `lzo` `none`
+- json: `lzo` `none`
+- csv: `lzo` `none`
+- orc: `lzo` `snappy` `lz4` `zlib` `none`
+- parquet: `lzo` `snappy` `lz4` `gzip` `brotli` `zstd` `none`
+
+提示:excel 类型不支持任何压缩格式
+
+### 常见选项
+
+Sink 插件的常见参数,请参阅 [Sink 常见选项](common-options.md) 获取详细信息。
+
+### max_rows_in_memory [int]
+
+当文件格式为 Excel 时,内存中可以缓存的数据项最大数量。
+
+### sheet_name [string]
+
+工作簿的表名。
+
+### xml
+
+_root_tag [string]
+
+指定 XML 文件中根元素的标签名。
+
+### xml_row_tag [string]
+
+指定 XML 文件中数据行的标签名。
+
+### xml_use_attr_format [boolean]
+
+指定是否使用标签属性格式处理数据。
+
+### parquet_avro_write_timestamp_as_int96 [boolean]
+
+支持从时间戳写入 Parquet INT96,仅对 parquet 文件有效。
+
+### parquet_avro_write_fixed_as_int96 [array]
+
+支持从 12 字节字段写入 Parquet INT96,仅对 parquet 文件有效。
+
+### enable_header_write [boolean]
+
+仅在 file_format_type 为 text,csv 时使用。false:不写入表头,true:写入表头。
+
+### encoding [string]
+
+仅在 file_format_type 为 json,text,csv,xml 时使用。文件写入的编码。该参数将通过 
`Charset.forName(encoding)` 解析。
+
+## 示例
+
+对于 orc 文件格式的简单配置
+
+```bash
+
+LocalFile {
+    path = "/tmp/hive/warehouse/test2"
+    file_format_type = "orc"
+}
+
+```
+
+对于带有 `encoding` 的 json、text、csv 或 xml 文件格式
+
+```hocon
+
+LocalFile {
+    path = "/tmp/hive/warehouse/test2"
+    file_format_type = "text"
+    encoding = "gbk"
+}
+
+```
+
+对于带有 `sink_columns` 的 parquet 文件格式
+
+```bash
+
+LocalFile {
+    path = "/tmp/hive/warehouse/test2"
+    file_format_type = "parquet"
+    sink_columns = ["name","age"]
+}
+
+```
+
+对于带有 `have_partition`、`custom_filename` 和 `sink_columns` 的 text 文件格式
+
+```bash
+
+LocalFile {
+    path = "/tmp/hive/warehouse/test2"
+    file_format_type = "text"
+    field_delimiter = "\t"
+    row_delimiter = "\n"
+    have_partition = true
+    partition_by = ["age"]
+    partition_dir_expression = "${k0}=${v0}"
+    is_partition_field_write_in_file = true
+    custom_filename = true
+    file_name_expression = "${transactionId}_${now}"
+    filename_time_format = "yyyy.MM.dd"
+    sink_columns = ["name","age"]
+    is_enable_transaction = true
+}
+
+```
+
+对于带有 `sheet_name` 和 `max_rows_in_memory` 的 excel 文件格式
+
+```bash
+
+LocalFile {
+    path="/tmp/seatunnel/excel"
+    sheet_name = "Sheet1"
+    max_rows_in_memory = 1024
+    partition_dir_expression="${k0}=${v0}"
+    is_partition_field_write_in_file=true
+    file_name_expression="${transactionId}_${now}"
+    file_format_type="excel"
+    filename_time_format="yyyy.MM.dd"
+    is_enable_transaction=true
+  }
+
+```
+
+对于从上游提取源元数据,可以在路径中使用 `${database_name}`、`${table_name}` 和 `${schema_name}`。
+
+```bash
+
+LocalFile {
+    path = "/tmp/hive/warehouse/${table_name}"
+    file_format_type = "parquet"
+    sink_columns = ["name","age"]
+}
+
+```
+
+## 更新日志
+
+### 2.2.0-beta 2022-09-26
+
+- 新增本地文件接收器
+
+### 2.3.0-beta 2022-10-20
+
+- [BugFix] 修复了 Windows 环境中路径错误的 bug 
([2980](https://github.com/apache/seatunnel/pull/2980))
+- [BugFix] 修复了文件系统获取错误 ([3117](https://github.com/apache/seatunnel/pull/3117))
+- [BugFix] 解决了无法解析 '\t' 作为配置文件分隔符的 bug 
([3083](https://github.com/apache/seatunnel/pull/3083))
+
+### 下一个版本
+
+- [BugFix] 修复了以下导致数据写入文件失败的 bug 
([3258](https://github.com/apache/seatunnel/pull/3258))
+  - 当上游字段为 null 时会抛出 NullPointerException
+  - Sink 列映射失败
+  - 从状态恢复 writer 时直接获取事务失败
+- [Improve] 支持为每个文件设置批量大小 
([3625](https://github.com/apache/seatunnel/pull/3625))
+- [Improve] 支持文件压缩 ([3899](https://github.com/apache/seatunnel/pull/3899))
+
diff --git a/docs/zh/connector-v2/sink/Redis.md 
b/docs/zh/connector-v2/sink/Redis.md
new file mode 100644
index 0000000000..ac09849b7e
--- /dev/null
+++ b/docs/zh/connector-v2/sink/Redis.md
@@ -0,0 +1,157 @@
+# Redis
+
+> Redis sink connector
+
+## 描述
+
+用于将数据写入 Redis。
+
+## 主要功能
+
+- [ ] [exactly-once](../../concept/connector-v2-features.md)
+
+## 选项
+
+|       名称       |   类型   |        是否必须         |  默认值   |
+|----------------|--------|---------------------|--------|
+| host           | string | 是                   | -      |
+| port           | int    | 是                   | -      |
+| key            | string | 是                   | -      |
+| data_type      | string | 是                   | -      |
+| user           | string | 否                   | -      |
+| auth           | string | 否                   | -      |
+| db_num         | int    | 否                   | 0      |
+| mode           | string | 否                   | single |
+| nodes          | list   | 当 mode=cluster 时为:是 | -      |
+| format         | string | 否                   | json   |
+| expire         | long   | 否                   | -1     |
+| common-options |        | 否                   | -      |
+
+### host [string]
+
+Redis 主机地址
+
+### port [int]
+
+Redis 端口
+
+### key [string]
+
+要写入 Redis 的键值。
+
+例如,如果想使用上游数据中的某个字段值作为键值,可以将该字段名称指定给 key。
+
+上游数据如下:
+
+| code | data | success |
+|------|------|---------|
+| 200  | 获取成功 | true    |
+| 500  | 内部错误 | false   |
+
+如果将字段名称指定为 `code` 并将 data_type 设置为 `key`,将有两个数据写入 Redis:
+1. `200 -> {code: 200, message: true, data: 获取成功}`
+2. `500 -> {code: 500, message: false, data: 内部错误}`
+
+如果将字段名称指定为 `value` 并将 data_type 设置为 `key`,则由于上游数据的字段中没有 `value` 字段,将只有一个数据写入 
Redis:
+
+1. `value -> {code: 500, message: false, data: 内部错误}`
+
+请参见 data_type 部分以了解具体的写入规则。
+
+当然,这里写入的数据格式只是以 json 为例,具体格式以用户配置的 `format` 为准。
+
+### data_type [string]
+
+Redis 数据类型,支持 `key` `hash` `list` `set` `zset`
+
+- key
+
+> 每个来自上游的数据都会更新到配置的 key,这意味着后面的数据会覆盖前面的数据,只有最后的数据会存储在该 key 中。
+
+- hash
+
+> 每个来自上游的数据会根据字段拆分并写入 hash key,后面的数据会覆盖前面的数据。
+
+- list
+
+> 每个来自上游的数据都会被添加到配置的 list key 中。
+
+- set
+
+> 每个来自上游的数据都会被添加到配置的 set key 中。
+
+- zset
+
+> 每个来自上游的数据都会以权重为 1 的方式添加到配置的 zset key 中。因此,zset 中数据的顺序基于数据的消费顺序。
+
+### user [string]
+
+Redis 认证用户,连接加密集群时需要
+
+### auth [string]
+
+Redis 认证密码,连接加密集群时需要
+
+### db_num [int]
+
+Redis 数据库索引 ID,默认连接到 db 0
+
+### mode [string]
+
+Redis 模式,`single` 或 `cluster`,默认是 `single`
+
+### nodes [list]
+
+Redis 节点信息,在集群模式下使用,必须按如下格式:
+
+["host1:port1", "host2:port2"]
+
+### format [string]
+
+上游数据的格式,目前只支持 `json`,以后会支持 `text`,默认 `json`。
+
+当你指定格式为 `json` 时,例如:
+
+上游数据如下:
+
+| code | data | success |
+|------|------|---------|
+| 200  | 获取成功 | true    |
+
+连接器会生成如下数据并写入 Redis:
+
+```json
+{"code":  200, "data":  "获取成功", "success":  "true"}
+```
+
+### expire [long]
+
+设置 Redis 的过期时间,单位为秒。默认值为 -1,表示键不会自动过期。
+
+### common options
+
+Sink 插件通用参数,请参考 [Sink Common Options](common-options.md) 获取详情
+
+## 示例
+
+简单示例:
+
+```hocon
+Redis {
+  host = localhost
+  port = 6379
+  key = age
+  data_type = list
+}
+```
+
+## 更新日志
+
+### 2.2.0-beta 2022-09-26
+
+- 添加 Redis Sink Connector
+
+### 下一个版本
+
+- [改进] 支持 Redis 集群模式连接和用户认证 
[3188](https://github.com/apache/seatunnel/pull/3188)
+

Reply via email to