diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/Connector-v2-release-state.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/Connector-v2-release-state.md
new file mode 100644
index 000000000000..779394b70356
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/Connector-v2-release-state.md
@@ -0,0 +1,85 @@
+# 连接器发布状态
+
+SeaTunnel 使用连接器分级系统来帮助您了解连接器的期望:
+
+| | Alpha | Beta | General Availability (GA) |
+|----------------------|------------------------------------------------------------------------------|----------------------------------------------------------------------------|--------------------------------------------------------------|
+| Expectations | alpha 连接器表示正在开发的连接器,可帮助 SeaTunnel 收集早期采用者报告的早期反馈和问题。 我们强烈反对在生产用例中使用 alpha 版本 | Beta 连接器被认为稳定可靠,没有向后不兼容的更改,但尚未得到更广泛的用户群体的验证。 我们希望在正式发布之前找到并修复该版本中的一些问题和错误。 | 普遍可用的连接器已被认为可以在生产环境中使用,并得到 SeaTunnel 的正式支持。 它的文档被认为足以支持广泛采用。 |
+| | | | |
+| Production Readiness | No | Yes | Yes |
+
+## Connector V2 Health
+
+| Connector Name | Type | Status | Support Version |
+|-------------------------------------------------------------------|--------|--------|-----------------|
+| [AmazonDynamoDB](../en/connector-v2/sink/AmazonDynamoDB.md) | Sink | Beta | 2.3.0 |
+| [AmazonDynamoDB](../en/connector-v2/source/AmazonDynamoDB.md) | Source | Beta | 2.3.0 |
+| [Asset](../en/connector-v2/sink/Assert.md) | Sink | Beta | 2.2.0-beta |
+| [Cassandra](../en/connector-v2/sink/Cassandra.md) | Sink | Beta | 2.3.0 |
+| [Cassandra](../en/connector-v2/source/Cassandra.md) | Source | Beta | 2.3.0 |
+| [ClickHouse](../en/connector-v2/source/Clickhouse.md) | Source | GA | 2.2.0-beta |
+| [ClickHouse](../en/connector-v2/sink/Clickhouse.md) | Sink | GA | 2.2.0-beta |
+| [ClickHouseFile](../en/connector-v2/sink/ClickhouseFile.md) | Sink | GA | 2.2.0-beta |
+| [Console](connector-v2/sink/Console.md) | Sink | GA | 2.2.0-beta |
+| [DataHub](../en/connector-v2/sink/Datahub.md) | Sink | Alpha | 2.2.0-beta |
+| [Doris](../en/connector-v2/sink/Doris.md) | Sink | Beta | 2.3.0 |
+| [DingTalk](../en/connector-v2/sink/DingTalk.md) | Sink | Alpha | 2.2.0-beta |
+| [Elasticsearch](connector-v2/sink/Elasticsearch.md) | Sink | GA | 2.2.0-beta |
+| [Email](connector-v2/sink/Email.md) | Sink | Alpha | 2.2.0-beta |
+| [Enterprise WeChat](../en/connector-v2/sink/Enterprise-WeChat.md) | Sink | Alpha | 2.2.0-beta |
+| [FeiShu](connector-v2/sink/Feishu.md) | Sink | Alpha | 2.2.0-beta |
+| [Fake](../en/connector-v2/source/FakeSource.md) | Source | GA | 2.2.0-beta |
+| [FtpFile](../en/connector-v2/sink/FtpFile.md) | Sink | Beta | 2.2.0-beta |
+| [Greenplum](../en/connector-v2/sink/Greenplum.md) | Sink | Beta | 2.2.0-beta |
+| [Greenplum](../en/connector-v2/source/Greenplum.md) | Source | Beta | 2.2.0-beta |
+| [HdfsFile](connector-v2/sink/HdfsFile.md) | Sink | GA | 2.2.0-beta |
+| [HdfsFile](connector-v2/source/HdfsFile.md) | Source | GA | 2.2.0-beta |
+| [Hive](../en/connector-v2/sink/Hive.md) | Sink | GA | 2.2.0-beta |
+| [Hive](../en/connector-v2/source/Hive.md) | Source | GA | 2.2.0-beta |
+| [Http](connector-v2/sink/Http.md) | Sink | Beta | 2.2.0-beta |
+| [Http](../en/connector-v2/source/Http.md) | Source | Beta | 2.2.0-beta |
+| [Iceberg](../en/connector-v2/source/Iceberg.md) | Source | Beta | 2.2.0-beta |
+| [InfluxDB](../en/connector-v2/sink/InfluxDB.md) | Sink | Beta | 2.3.0 |
+| [InfluxDB](../en/connector-v2/source/InfluxDB.md) | Source | Beta | 2.3.0-beta |
+| [IoTDB](../en/connector-v2/source/IoTDB.md) | Source | GA | 2.2.0-beta |
+| [IoTDB](../en/connector-v2/sink/IoTDB.md) | Sink | GA | 2.2.0-beta |
+| [Jdbc](../en/connector-v2/source/Jdbc.md) | Source | GA | 2.2.0-beta |
+| [Jdbc](connector-v2/sink/Jdbc.md) | Sink | GA | 2.2.0-beta |
+| [Kafka](../en/connector-v2/source/kafka.md) | Source | GA | 2.3.0 |
+| [Kafka](connector-v2/sink/Kafka.md) | Sink | GA | 2.2.0-beta |
+| [Kudu](../en/connector-v2/source/Kudu.md) | Source | Beta | 2.2.0-beta |
+| [Kudu](../en/connector-v2/sink/Kudu.md) | Sink | Beta | 2.2.0-beta |
+| [Lemlist](../en/connector-v2/source/Lemlist.md) | Source | Beta | 2.3.0 |
+| [LocalFile](../en/connector-v2/sink/LocalFile.md) | Sink | GA | 2.2.0-beta |
+| [LocalFile](../en/connector-v2/source/LocalFile.md) | Source | GA | 2.2.0-beta |
+| [Maxcompute]../en/(connector-v2/source/Maxcompute.md) | Source | Alpha | 2.3.0 |
+| [Maxcompute](../en/connector-v2/sink/Maxcompute.md) | Sink | Alpha | 2.3.0 |
+| [MongoDB](../en/connector-v2/source/MongoDB.md) | Source | Beta | 2.2.0-beta |
+| [MongoDB](../en/connector-v2/sink/MongoDB.md) | Sink | Beta | 2.2.0-beta |
+| [MyHours](../en/connector-v2/source/MyHours.md) | Source | Alpha | 2.2.0-beta |
+| [MySqlCDC](../en/connector-v2/source/MySQL-CDC.md) | Source | GA | 2.3.0 |
+| [Neo4j](../en/connector-v2/sink/Neo4j.md) | Sink | Beta | 2.2.0-beta |
+| [Notion](../en/connector-v2/source/Notion.md) | Source | Alpha | 2.3.0 |
+| [OneSignal](../en/connector-v2/source/OneSignal.md) | Source | Beta | 2.3.0 |
+| [OpenMldb](../en/connector-v2/source/OpenMldb.md) | Source | Beta | 2.3.0 |
+| [OssFile](../en/connector-v2/sink/OssFile.md) | Sink | Beta | 2.2.0-beta |
+| [OssFile](../en/connector-v2/source/OssFile.md) | Source | Beta | 2.2.0-beta |
+| [Phoenix](../en/connector-v2/sink/Phoenix.md) | Sink | Beta | 2.2.0-beta |
+| [Phoenix](../en/connector-v2/source/Phoenix.md) | Source | Beta | 2.2.0-beta |
+| [Pulsar](../en/connector-v2/source/Pulsar.md) | Source | Beta | 2.2.0-beta |
+| [RabbitMQ](../en/connector-v2/sink/Rabbitmq.md) | Sink | Beta | 2.3.0 |
+| [RabbitMQ](../en/connector-v2/source/Rabbitmq.md) | Source | Beta | 2.3.0 |
+| [Redis](../en/connector-v2/sink/Redis.md) | Sink | Beta | 2.2.0-beta |
+| [Redis](../en/connector-v2/source/Redis.md) | Source | Beta | 2.2.0-beta |
+| [S3Redshift](../en/connector-v2/sink/S3-Redshift.md) | Sink | GA | 2.3.0-beta |
+| [S3File](../en/connector-v2/source/S3File.md) | Source | GA | 2.3.0-beta |
+| [S3File](../en/connector-v2/sink/S3File.md) | Sink | GA | 2.3.0-beta |
+| [Sentry](../en/connector-v2/sink/Sentry.md) | Sink | Alpha | 2.2.0-beta |
+| [SFtpFile](../en/connector-v2/sink/SftpFile.md) | Sink | Beta | 2.3.0 |
+| [SFtpFile](../en/connector-v2/source/SftpFile.md) | Source | Beta | 2.3.0 |
+| [Slack](../en/connector-v2/sink/Slack.md) | Sink | Beta | 2.3.0 |
+| [Socket](../en/connector-v2/sink/Socket.md) | Sink | Beta | 2.2.0-beta |
+| [Socket](../en/connector-v2/source/Socket.md) | Source | Beta | 2.2.0-beta |
+| [StarRocks](../en/connector-v2/sink/StarRocks.md) | Sink | Alpha | 2.3.0 |
+| [Tablestore](../en/connector-v2/sink/Tablestore.md) | Sink | Alpha | 2.3.0 |
+
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/about.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/about.md
new file mode 100644
index 000000000000..9af0bfaaea3b
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/about.md
@@ -0,0 +1,70 @@
+# 关于 SeaTunnel
+
+
+
+[![Slack](https://img.shields.io/badge/slack-%23seatunnel-4f8eba?logo=slack)](https://s.apache.org/seatunnel-slack)
+[![Twitter Follow](https://img.shields.io/twitter/follow/ASFSeaTunnel.svg?label=Follow&logo=twitter)](https://twitter.com/ASFSeaTunnel)
+
+SeaTunnel是一个非常易用、超高性能的分布式数据集成平台,支持实时海量数据同步。 每天可稳定高效同步数百亿数据,已被近百家企业应用于生产。
+
+## 为什么需要 SeaTunnel
+
+SeaTunnel专注于数据集成和数据同步,主要旨在解决数据集成领域的常见问题:
+
+- 数据源多样:常用数据源有数百种,版本不兼容。 随着新技术的出现,更多的数据源不断出现。 用户很难找到一个能够全面、快速支持这些数据源的工具。
+- 同步场景复杂:数据同步需要支持离线全量同步、离线增量同步、CDC、实时同步、全库同步等多种同步场景。
+- 资源需求高:现有的数据集成和数据同步工具往往需要大量的计算资源或JDBC连接资源来完成海量小表的实时同步。 这增加了企业的负担。
+- 缺乏质量和监控:数据集成和同步过程经常会出现数据丢失或重复的情况。 同步过程缺乏监控,无法直观了解任务过程中数据的真实情况。
+- 技术栈复杂:企业使用的技术组件不同,用户需要针对不同组件开发相应的同步程序来完成数据集成。
+- 管理和维护困难:受限于底层技术组件(Flink/Spark)不同,离线同步和实时同步往往需要分开开发和管理,增加了管理和维护的难度。
+
+## SeaTunnel 相关特性
+
+- 丰富且可扩展的Connector:SeaTunnel提供了不依赖于特定执行引擎的Connector API。 基于该API开发的Connector(Source、Transform、Sink)可以运行在很多不同的引擎上,例如目前支持的SeaTunnel引擎(Zeta)、Flink、Spark等。
+- Connector插件:插件式设计让用户可以轻松开发自己的Connector并将其集成到SeaTunnel项目中。 目前,SeaTunnel 支持超过 100 个连接器,并且数量正在激增。 这是[当前支持的连接器]的列表(Connector-v2-release-state.md)
+- 批流集成:基于SeaTunnel Connector API开发的Connector完美兼容离线同步、实时同步、全量同步、增量同步等场景。 它们大大降低了管理数据集成任务的难度。
+- 支持分布式快照算法,保证数据一致性。
+- 多引擎支持:SeaTunnel默认使用SeaTunnel引擎(Zeta)进行数据同步。 SeaTunnel还支持使用Flink或Spark作为Connector的执行引擎,以适应企业现有的技术组件。 SeaTunnel 支持 Spark 和 Flink 的多个版本。
+- JDBC复用、数据库日志多表解析:SeaTunnel支持多表或全库同步,解决了过度JDBC连接的问题; 支持多表或全库日志读取解析,解决了CDC多表同步场景下需要处理日志重复读取解析的问题。
+- 高吞吐量、低延迟:SeaTunnel支持并行读写,提供稳定可靠、高吞吐量、低延迟的数据同步能力。
+- 完善的实时监控:SeaTunnel支持数据同步过程中每一步的详细监控信息,让用户轻松了解同步任务读写的数据数量、数据大小、QPS等信息。
+- 支持两种作业开发方法:编码和画布设计。 SeaTunnel Web 项目 https://github.com/apache/seatunnel-web 提供作业、调度、运行和监控功能的可视化管理。
+
+## SeaTunnel 工作流图
+
+![SeaTunnel Work Flowchart](/image_zh/architecture_diagram.png)
+
+SeaTunnel的运行流程如上图所示。
+
+用户配置作业信息并选择提交作业的执行引擎。
+
+Source Connector负责并行读取数据并将数据发送到下游Transform或直接发送到Sink,Sink将数据写入目的地。 值得注意的是,Source、Transform 和 Sink 可以很容易地自行开发和扩展。
+
+SeaTunnel 是一个 EL(T) 数据集成平台。 因此,在SeaTunnel中,Transform只能用于对数据进行一些简单的转换,例如将一列的数据转换为大写或小写,更改列名,或者将一列拆分为多列。
+
+SeaTunnel 使用的默认引擎是 [SeaTunnel Engine](seatunnel-engine/about.md)。 如果您选择使用Flink或Spark引擎,SeaTunnel会将Connector打包成Flink或Spark程序并提交给Flink或Spark运行。
+
+## 连接器
+
+- **源连接器** SeaTunnel 支持从各种关系、图形、NoSQL、文档和内存数据库读取数据; 分布式文件系统,例如HDFS; 以及各种云存储解决方案,例如S3和OSS。 我们还支持很多常见SaaS服务的数据读取。 您可以在[此处] 访问详细列表。 如果您愿意,您可以开发自己的源连接器并将其轻松集成到 SeaTunnel 中。
+
+- **转换连接器** 如果源和接收器之间的架构不同,您可以使用转换连接器更改从源读取的架构,使其与接收器架构相同。
+
+- **Sink Connector** SeaTunnel 支持将数据写入各种关系型、图形、NoSQL、文档和内存数据库; 分布式文件系统,例如HDFS; 以及各种云存储解决方案,例如S3和OSS。 我们还支持将数据写入许多常见的 SaaS 服务。 您可以在[此处]访问详细列表。 如果您愿意,您可以开发自己的 Sink 连接器并轻松将其集成到 SeaTunnel 中。
+
+## 谁在使用 SeaTunnel
+
+SeaTunnel 拥有大量用户。 您可以在[用户](https://seatunnel.apache.org/user)中找到有关他们的更多信息.
+
+## 展望
+
+
+
+
+
+SeaTunnel 丰富了CNCF 云原生景观。
+
+
+## 了解更多
+
+您可以参阅[快速入门](/docs/category/start-v2/locally/deployment) 了解后续相关步骤。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/command/connector-check.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/command/connector-check.md
new file mode 100644
index 000000000000..5df7c54611e6
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/command/connector-check.md
@@ -0,0 +1,35 @@
+# 连接器检查命令用法
+
+## 命令入口
+
+```shell
+bin/seatunnel-connector.sh
+```
+
+## 命令选项
+
+```text
+Usage: seatunnel-connector.sh [options]
+ Options:
+ -h, --help Show the usage message
+ -l, --list List all supported plugins(sources, sinks, transforms)
+ (default: false)
+ -o, --option-rule Get option rule of the plugin by the plugin
+ identifier(connector name or transform name)
+ -pt, --plugin-type SeaTunnel plugin type, support [source, sink,
+ transform]
+```
+
+## 例子
+
+```shell
+# List all supported connectors(sources and sinks) and transforms
+bin/seatunnel-connector.sh -l
+# List all supported sinks
+bin/seatunnel-connector.sh -l -pt sink
+# Get option rule of the connector or transform by the name
+bin/seatunnel-connector.sh -o Paimon
+# Get option rule of paimon sink
+bin/seatunnel-connector.sh -o Paimon -pt sink
+```
+
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/concept/JobEnvConfig.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/concept/JobEnvConfig.md
new file mode 100644
index 000000000000..c20797604f34
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/concept/JobEnvConfig.md
@@ -0,0 +1,67 @@
+# JobEnvConfig
+
+本文档描述了env的配置信息,公共参数可以在所有引擎中使用。为了更好的区分引擎参数,其他引擎的附加参数需要携带前缀。
+在flink引擎中,我们使用`flink.`作为前缀。在spark引擎中,我们不使用任何前缀来修改参数,因为官方的spark参数本身就是以`spark.`开头。
+
+## 公共参数
+
+以下配置参数对所有引擎通用:
+
+### job.name
+
+该参数配置任务名称。
+
+### jars
+
+第三方包可以通过`jars`加载,例如:`jars="file://local/jar1.jar;file://local/jar2.jar"`
+
+### job.mode
+
+通过`job.mode`你可以配置任务是在批处理模式还是流处理模式。例如:`job.mode = "BATCH"` 或者 `job.mode = "STREAMING"`
+
+### checkpoint.interval
+
+获取定时调度检查点的时间间隔。
+
+在`STREAMING`模式下,检查点是必须的,如果不设置,将从应用程序配置文件`seatunnel.yaml`中获取。 在`BATCH`模式下,您可以通过不设置此参数来禁用检查点。
+
+### parallelism
+
+该参数配置source和sink的并行度。
+
+### job.retry.times
+
+用于控制作业失败时的默认重试次数。默认值为3,并且仅适用于Zeta引擎。
+
+### job.retry.interval.seconds
+
+用于控制作业失败时的默认重试间隔。默认值为3秒,并且仅适用于Zeta引擎。
+
+### savemode.execute.location
+
+此参数用于指定在Zeta引擎中执行作业时SaveMode执行的时机。
+默认值为`CLUSTER`,这意味着SaveMode在作业提交到集群上之后在集群上执行。
+当值为`CLIENT`时,SaveMode操作在作业提交的过程中执行,使用shell脚本提交作业时,该过程在提交作业的shell进程中执行。使用rest api提交作业时,该过程在http请求的处理线程中执行。
+请尽量使用`CLUSTER`模式,因为当`CLUSTER`模式没有问题时,我们将删除`CLIENT`模式。
+
+### shade.identifier
+
+指定加密方式,如果您没有加密或解密配置文件的需求,此选项可以忽略。
+
+更多详细信息,您可以参考文档 [Config Encryption Decryption](../../en/connector-v2/Config-Encryption-Decryption.md)
+
+## Flink 引擎参数
+
+这里列出了一些与 Flink 中名称相对应的 SeaTunnel 参数名称,并非全部,更多内容请参考官方 [Flink Documentation](https://flink.apache.org/) for more.
+
+| Flink 配置名称 | SeaTunnel 配置名称 |
+|---------------------------------|---------------------------------------|
+| pipeline.max-parallelism | flink.pipeline.max-parallelism |
+| execution.checkpointing.mode | flink.execution.checkpointing.mode |
+| execution.checkpointing.timeout | flink.execution.checkpointing.timeout |
+| ... | ... |
+
+## Spark 引擎参数
+
+由于Spark配置项并无调整,这里就不列出来了,请参考官方 [Spark Documentation](https://spark.apache.org/).
+
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/concept/config.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/concept/config.md
new file mode 100644
index 000000000000..72c14bafcec7
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/concept/config.md
@@ -0,0 +1,310 @@
+---
+
+sidebar_position: 2
+-------------------
+
+# 配置文件简介
+
+在SeaTunnel中,最重要的事情就是配置文件,尽管用户可以自定义他们自己的数据同步需求以发挥SeaTunnel最大的潜力。那么接下来我将会向你介绍如何设置配置文件。
+
+配置文件的主要格式是 `hocon`, 有关该格式类型的更多信息你可以参考[HOCON-GUIDE](https://github.com/lightbend/config/blob/main/HOCON.md),
+顺便提一下,我们也支持 `json`格式,但你应该知道配置文件的名称应该是以 `.json`结尾。
+
+我们同时提供了以 `SQL` 格式,详细可以参考[SQL配置文件](sql-config.md)。
+
+## 例子
+
+在你阅读之前,你可以在发布包中的config目录[这里](https://github.com/apache/seatunnel/tree/dev/config)找到配置文件的例子。
+
+## 配置文件结构
+
+配置文件类似下面这个例子:
+
+### hocon
+
+```hocon
+env {
+ job.mode = "BATCH"
+}
+
+source {
+ FakeSource {
+ result_table_name = "fake"
+ row.num = 100
+ schema = {
+ fields {
+ name = "string"
+ age = "int"
+ card = "int"
+ }
+ }
+ }
+}
+
+transform {
+ Filter {
+ source_table_name = "fake"
+ result_table_name = "fake1"
+ fields = [name, card]
+ }
+}
+
+sink {
+ Clickhouse {
+ host = "clickhouse:8123"
+ database = "default"
+ table = "seatunnel_console"
+ fields = ["name", "card"]
+ username = "default"
+ password = ""
+ source_table_name = "fake1"
+ }
+}
+```
+
+#### 多行文本支持
+
+`hocon`支持多行字符串,这样就可以包含较长的文本段落,而不必担心换行符或特殊格式。这可以通过将文本括在三层引号 **`"""`** 中来实现。例如:
+
+```
+var = """
+Apache SeaTunnel is a
+next-generation high-performance,
+distributed, massive data integration tool.
+"""
+sql = """ select * from "table" """
+```
+
+### json
+
+```json
+
+{
+ "env": {
+ "job.mode": "batch"
+ },
+ "source": [
+ {
+ "plugin_name": "FakeSource",
+ "result_table_name": "fake",
+ "row.num": 100,
+ "schema": {
+ "fields": {
+ "name": "string",
+ "age": "int",
+ "card": "int"
+ }
+ }
+ }
+ ],
+ "transform": [
+ {
+ "plugin_name": "Filter",
+ "source_table_name": "fake",
+ "result_table_name": "fake1",
+ "fields": ["name", "card"]
+ }
+ ],
+ "sink": [
+ {
+ "plugin_name": "Clickhouse",
+ "host": "clickhouse:8123",
+ "database": "default",
+ "table": "seatunnel_console",
+ "fields": ["name", "card"],
+ "username": "default",
+ "password": "",
+ "source_table_name": "fake1"
+ }
+ ]
+}
+
+```
+
+正如你看到的,配置文件包括几个部分:env, source, transform, sink。不同的模块具有不同的功能。
+当你了解了这些模块后,你就会懂得SeaTunnel到底是如何工作的。
+
+### env
+
+用于添加引擎可选的参数,不管是什么引擎(Zeta、Spark 或者 Flink),对应的可选参数应该在这里填写。
+
+注意,我们按照引擎分离了参数,对于公共参数我们可以像以前一样配置。对于Flink和Spark引擎,其参数的具体配置规则可以参考[JobEnvConfig](./JobEnvConfig.md)。
+
+
+
+### source
+
+source用于定义SeaTunnel在哪儿检索数据,并将检索的数据用于下一步。
+可以同时定义多个source。目前支持的source请看[Source of SeaTunnel](../../en/connector-v2/source)。每种source都有自己特定的参数用来
+定义如何检索数据,SeaTunnel也抽象了每种source所使用的参数,例如 `result_table_name` 参数,用于指定当前source生成的数据的名称,
+方便后续其他模块使用。
+
+### transform
+
+当我们有了数据源之后,我们可能需要对数据进行进一步的处理,所以我们就有了transform模块。当然,这里使用了“可能”这个词,
+这意味着我们也可以直接将transform视为不存在,直接从source到sink,像下面这样:
+
+```hocon
+env {
+ job.mode = "BATCH"
+}
+
+source {
+ FakeSource {
+ result_table_name = "fake"
+ row.num = 100
+ schema = {
+ fields {
+ name = "string"
+ age = "int"
+ card = "int"
+ }
+ }
+ }
+}
+
+sink {
+ Clickhouse {
+ host = "clickhouse:8123"
+ database = "default"
+ table = "seatunnel_console"
+ fields = ["name", "age", "card"]
+ username = "default"
+ password = ""
+ source_table_name = "fake1"
+ }
+}
+```
+
+与source类似, transform也有属于每个模块的特定参数。目前支持的source请看。目前支持的transform请看 [Transform V2 of SeaTunnel](../../en/transform-v2)
+
+
+
+### sink
+
+我们使用SeaTunnel的作用是将数据从一个地方同步到其它地方,所以定义数据如何写入,写入到哪里是至关重要的。通过SeaTunnel提供的
+sink模块,你可以快速高效地完成这个操作。Sink和source非常相似,区别在于读取和写入。所以去看看我们[Sink of SeaTunnel](../../en/connector-v2/sink)吧。
+
+### 其它
+
+你会疑惑当定义了多个source和多个sink时,每个sink读取哪些数据,每个transform读取哪些数据?我们使用`result_table_name` 和
+`source_table_name` 两个配置。每个source模块都会配置一个`result_table_name`来指示数据源生成的数据源名称,其它transform和sink
+模块可以使用`source_table_name` 引用相应的数据源名称,表示要读取数据进行处理。然后transform,作为一个中间的处理模块,可以同时使用
+`result_table_name` 和 `source_table_name` 配置。但你会发现在上面的配置例子中,不是每个模块都配置了这些参数,因为在SeaTunnel中,
+有一个默认的约定,如果这两个参数没有配置,则使用上一个节点的最后一个模块生成的数据。当只有一个source时这是非常方便的。
+
+## 配置变量替换
+
+在配置文件中,我们可以定义一些变量并在运行时替换它们。但是注意仅支持 hocon 格式的文件。
+
+```hocon
+env {
+ job.mode = "BATCH"
+ job.name = ${jobName}
+ parallelism = 2
+}
+
+source {
+ FakeSource {
+ result_table_name = ${resName}
+ row.num = ${rowNum}
+ string.template = ${strTemplate}
+ int.template = [20, 21]
+ schema = {
+ fields {
+ name = ${nameType}
+ age = "int"
+ }
+ }
+ }
+}
+
+transform {
+ sql {
+ source_table_name = "fake"
+ result_table_name = "sql"
+ query = "select * from "${resName}" where name = '"${nameVal}"' "
+ }
+
+}
+
+sink {
+ Console {
+ source_table_name = "sql"
+ username = ${username}
+ password = ${password}
+ }
+}
+
+```
+
+在上述配置中,我们定义了一些变量,如 ${rowNum}、${resName}。
+我们可以使用以下 shell 命令替换这些参数:
+
+```shell
+./bin/seatunnel.sh -c
+-i jobName='this_is_a_job_name'
+-i resName=fake
+-i rowNum=10
+-i strTemplate=['abc','d~f','hi']
+-i nameType=string
+-i nameVal=abc
+-i username=seatunnel=2.3.1
+-i password='$a^b%c.d~e0*9('
+-e local
+```
+
+然后最终提交的配置是:
+
+```hocon
+env {
+ job.mode = "BATCH"
+ job.name = "this_is_a_job_name"
+ parallelism = 2
+}
+
+source {
+ FakeSource {
+ result_table_name = "fake"
+ row.num = 10
+ string.template = ['abc','d~f','hi']
+ int.template = [20, 21]
+ schema = {
+ fields {
+ name = "string"
+ age = "int"
+ }
+ }
+ }
+}
+
+transform {
+ sql {
+ source_table_name = "fake"
+ result_table_name = "sql"
+ query = "select * from "fake" where name = 'abc' "
+ }
+
+}
+
+sink {
+ Console {
+ source_table_name = "sql"
+ username = "seatunnel=2.3.1"
+ password = "$a^b%c.d~e0*9("
+ }
+}
+
+```
+
+一些注意事项:
+
+- 如果值包含特殊字符,如`(`,请使用`'`引号将其括起来。
+- 如果替换变量包含`"`或`'`(如`"resName"`和`"nameVal"`),需要添加`"`。
+- 值不能包含空格`' '`。例如, `-i jobName='this is a job name'`将被替换为`job.name = "this"`。
+- 如果要使用动态参数,可以使用以下格式: `-i date=$(date +"%Y%m%d")`。
+
+## 此外
+
+如果你想了解更多关于格式配置的详细信息,请查看 [HOCON](https://github.com/lightbend/config/blob/main/HOCON.md)。
+
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/concept/connector-v2-features.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/concept/connector-v2-features.md
new file mode 100644
index 000000000000..77041e953250
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/concept/connector-v2-features.md
@@ -0,0 +1,70 @@
+# Connector V2 功能简介
+
+## Connector V2 和 V1 之间的不同
+
+从 https://github.com/apache/seatunnel/issues/1608 我们添加了 Connector V2 特性。
+Connector V2 是基于SeaTunnel Connector API接口定义的连接器。不像Connector V1, V2 支持如下特性:
+
+* **多引擎支持** SeaTunnel Connector API 是引擎独立的API。基于这个API开发的连接器可以在多个引擎上运行。目前支持Flink和Spark引擎,后续我们会支持其它的引擎。
+* **多引擎版本支持** 通过翻译层将连接器与引擎解耦,解决了大多数连接器需要修改代码才能支持新版本底层引擎的问题。
+* **流批一体** Connector V2 可以支持批处理和流处理。我们不需要为批和流分别开发连接器。
+* **多路复用JDBC/Log连接。** Connector V2支持JDBC资源复用和共享数据库日志解析。
+
+## Source Connector 特性
+
+Source connector有一些公共的核心特性,每个source connector在不同程度上支持它们。
+
+### 精确一次(exactly-once)
+
+如果数据源中的每条数据仅由源向下游发送一次,我们认为该source connector支持精确一次(exactly-once)。
+
+在SeaTunnel中, 我们可以保存读取的 **Split** 和它的 **offset**(当时读取的数据被分割时的位置,例如行号, 字节大小, 偏移量等) 作为检查点时的 **StateSnapshot** 。 如果任务重新启动, 我们会得到最后的 **StateSnapshot**
+然后定位到上次读取的 **Split** 和 **offset**,继续向下游发送数据。
+
+例如 `File`, `Kafka`。
+
+### 列投影(column projection)
+
+如果连接器支持仅从数据源读取指定列(请注意,如果先读取所有列,然后通过元数据(schema)过滤不需要的列,则此方法不是真正的列投影)
+
+例如 `JDBCSource` 可以使用sql定义读取列。
+
+`KafkaSource` 从主题中读取所有内容然后使用`schema`过滤不必要的列, 这不是真正的`列投影`。
+
+### 批(batch)
+
+批处理作业模式,读取的数据是有界的,当所有数据读取完成后作业将停止。
+
+### 流(stream)
+
+流式作业模式,数据读取无界,作业永不停止。
+
+### 并行性(parallelism)
+
+并行执行的Source Connector支持配置 `parallelism`,每个并发会创建一个任务来读取数据。
+在**Parallelism Source Connector**中,source会被分割成多个split,然后枚举器会将 split 分配给 SourceReader 进行处理。
+
+### 支持用户自定义split
+
+用户可以配置分割规则。
+
+### 支持多表读取
+
+支持在一个 SeaTunnel 作业中读取多个表。
+
+## Sink Connector 的特性
+
+Sink connector有一些公共的核心特性,每个sink connector在不同程度上支持它们。
+
+### 精确一次(exactly-once)
+
+当任意一条数据流入分布式系统时,如果系统在整个处理过程中仅准确处理任意一条数据一次,且处理结果正确,则认为系统满足精确一次一致性。
+
+对于sink connector,如果任何数据只写入目标一次,则sink connector支持精确一次。 通常有两种方法可以实现这一目标:
+
+* 目标数据库支持key去重。例如 `MySQL`, `Kudu`。
+* 目标支持 **XA 事务**(事务可以跨会话使用,即使创建事务的程序已经结束,新启动的程序也只需要知道最后一个事务的ID就可以重新提交或回滚事务)。 然后我们可以使用 **两阶段提交** 来确保 * 精确一次**。 例如:`File`, `MySQL`.
+
+### cdc(更改数据捕获,change data capture)
+
+如果sink connector支持基于主键写入行类型(INSERT/UPDATE_BEFORE/UPDATE_AFTER/DELETE),我们认为它支持cdc(更改数据捕获,change data capture)。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/concept/event-listener.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/concept/event-listener.md
new file mode 100644
index 000000000000..69972cbfc56b
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/concept/event-listener.md
@@ -0,0 +1,114 @@
+# 事件监听器
+
+## 介绍
+
+SeaTunnel提供了丰富的事件监听器功能,用于管理数据同步时的状态。此功能在需要监听任务运行状态时十分重要(`org.apache.seatunnel.api.event`)。本文档将指导您如何使用这些参数并有效地利用他们。
+
+## 支持的引擎
+
+> SeaTunnel Zeta
+> Flink
+> Spark
+
+## API
+
+事件(event)API的定义在 `org.apache.seatunnel.api.event`包中。
+
+### Event Data API
+
+- `org.apache.seatunnel.api.event.Event` - 事件数据的接口。
+- `org.apache.seatunnel.api.event.EventType` - 事件数据的枚举值。
+
+### Event Listener API
+
+您可以自定义事件处理器,例如将事件发送到外部系统。
+
+- `org.apache.seatunnel.api.event.EventHandler` - 事件处理器的接口,SPI将会自动从类路径中加载子类。
+
+### Event Collect API
+
+- `org.apache.seatunnel.api.source.SourceSplitEnumerator` - 在`SourceSplitEnumerator`加载事件监听器。
+
+```java
+package org.apache.seatunnel.api.source;
+
+public interface SourceSplitEnumerator {
+
+ interface Context {
+
+ /**
+ * Get the {@link org.apache.seatunnel.api.event.EventListener} of this enumerator.
+ *
+ * @return
+ */
+ EventListener getEventListener();
+ }
+}
+```
+
+- `org.apache.seatunnel.api.source.SourceReader` - 在`SourceReader`加载事件监听器。
+
+```java
+package org.apache.seatunnel.api.source;
+
+public interface SourceReader {
+
+ interface Context {
+
+ /**
+ * Get the {@link org.apache.seatunnel.api.event.EventListener} of this reader.
+ *
+ * @return
+ */
+ EventListener getEventListener();
+ }
+}
+```
+
+- `org.apache.seatunnel.api.sink.SinkWriter` - 在`SinkWriter`加载事件监听器。
+
+```java
+package org.apache.seatunnel.api.sink;
+
+public interface SinkWriter {
+
+ interface Context {
+
+ /**
+ * Get the {@link org.apache.seatunnel.api.event.EventListener} of this writer.
+ *
+ * @return
+ */
+ EventListener getEventListener();
+ }
+}
+```
+
+## 设置监听器
+
+您需要设置引擎配置以使用事件监听器功能。
+
+### Zeta 引擎
+
+配置样例(seatunnel.yaml):
+
+```
+seatunnel:
+ engine:
+ event-report-http:
+ url: "http://example.com:1024/event/report"
+ headers:
+ Content-Type: application/json
+```
+
+### Flink 引擎
+
+您可以定义 `org.apache.seatunnel.api.event.EventHandler` 接口并添加到类路径,SPI会自动加载。
+
+支持的flink版本: 1.14.0+
+
+样例: `org.apache.seatunnel.api.event.LoggingEventHandler`
+
+### Spark 引擎
+
+您可以定义 `org.apache.seatunnel.api.event.EventHandler` 接口并添加到类路径,SPI会自动加载。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/concept/schema-feature.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/concept/schema-feature.md
new file mode 100644
index 000000000000..d719a7953e58
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/concept/schema-feature.md
@@ -0,0 +1,264 @@
+# Schema 特性简介
+
+## 为什么我们需要Schema
+
+某些NoSQL数据库或消息队列没有严格限制schema,因此无法通过api获取schema。
+这时需要定义一个schema来转换为TableSchema并获取数据。
+
+## SchemaOptions
+
+我们可以使用SchemaOptions定义schema, SchemaOptions包含了一些定义schema的配置。 例如:columns, primaryKey, constraintKeys。
+
+```
+schema = {
+ table = "database.schema.table"
+ schema_first = false
+ comment = "comment"
+ columns = [
+ ...
+ ]
+ primaryKey {
+ ...
+ }
+
+ constraintKeys {
+ ...
+ }
+}
+```
+
+### table
+
+schema所属的表标识符的表全名,包含数据库、schema、表名。 例如 `database.schema.table`、`database.table`、`table`。
+
+### schema_first
+
+默认是false。
+
+如果schema_first是true, schema会优先使用, 这意味着如果我们设置 `table = "a.b"`, `a` 会被解析为schema而不是数据库, 那么我们可以支持写入 `table = "schema.table"`.
+
+### comment
+
+schema所属的 CatalogTable 的注释。
+
+### Columns
+
+Columns 是用于定义模式中的列的配置列表,每列可以包含名称(name)、类型(type)、是否可空(nullable)、默认值(defaultValue)、注释(comment)字段。
+
+```
+columns = [
+ {
+ name = id
+ type = bigint
+ nullable = false
+ columnLength = 20
+ defaultValue = 0
+ comment = "primary key id"
+ }
+]
+```
+
+| 字段 | 是否必须 | 默认值 | 描述 |
+|:-------------|:-----|:-----|--------------------|
+| name | Yes | - | 列的名称 |
+| type | Yes | - | 列的数据类型 |
+| nullable | No | true | 列是否可空 |
+| columnLength | No | 0 | 列的长度,当您需要定义长度时将很有用 |
+| columnScale | No | - | 列的精度,当您需要定义精度时将很有用 |
+| defaultValue | No | null | 列的默认值 |
+| comment | No | null | 列的注释 |
+
+#### 目前支持哪些类型
+
+| 数据类型 | Java中的值类型 | 描述 |
+|:----------|:---------------------------------------------------|:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| string | `java.lang.String` | 字符串 |
+| boolean | `java.lang.Boolean` | 布尔 |
+| tinyint | `java.lang.Byte` | 常规-128 至 127 。 0 到 255 无符号*。 指定括号中的最大位数。 |
+| smallint | `java.lang.Short` | 常规-32768 至 32767。 0 到 65535 无符号*。 指定括号中的最大位数。 |
+| int | `java.lang.Integer` | 允许从 -2,147,483,648 到 2,147,483,647 的所有数字。 |
+| bigint | `java.lang.Long` | 允许 -9,223,372,036,854,775,808 和 9,223,372,036,854,775,807 之间的所有数字。 |
+| float | `java.lang.Float` | 从-1.79E+308 到 1.79E+308浮点精度数值数据。 |
+| double | `java.lang.Double` | 双精度浮点。 处理大多数小数。 |
+| decimal | `java.math.BigDecimal` | Double 类型存储为字符串,允许固定小数点。 |
+| null | `java.lang.Void` | null |
+| bytes | `byte[]` | 字节。 |
+| date | `java.time.LocalDate` | 仅存储日期。从0001年1月1日到9999 年 12 月 31 日。 |
+| time | `java.time.LocalTime` | 仅存储时间。精度为 100 纳秒。 |
+| timestamp | `java.time.LocalDateTime` | 存储一个唯一的编号,每当创建或修改行时都会更新该编号。 时间戳基于内部时钟,与实际时间不对应。 每个表只能有一个时间戳变量。 |
+| row | `org.apache.seatunnel.api.table.type.SeaTunnelRow` | 行类型,可以嵌套。 |
+| map | `java.util.Map` | Map 是将键映射到值的对象。 键类型包括: `int` `string` `boolean` `tinyint` `smallint` `bigint` `float` `double` `decimal` `date` `time` `timestamp` `null` , and the value type includes `int` `string` `boolean` `tinyint` `smallint` `bigint` `float` `double` `decimal` `date` `time` `timestamp` `null` `array` `map` `row`. |
+| array | `ValueType[]` | 数组是一种表示元素集合的数据类型。 元素类型包括: `int` `string` `boolean` `tinyint` `smallint` `bigint` `float` `double`. |
+
+#### 如何声明支持的类型
+
+SeaTunnel 提供了一种简单直接的方式来声明基本类型。基本类型的关键字包括:`string`, `boolean`, `tinyint`, `smallint`, `int`, `bigint`, `float`, `double`, `date`, `time`, `timestamp`, 和 `null`。基本类型的关键字名称可以直接用作类型声明,并且SeaTunnel对类型关键字不区分大小写。 例如,如果您需要声明一个整数类型的字段,您可以简单地将字段定义为`int`或`"int"`。
+
+> null 类型声明必须用双引号引起来, 例如:`"null"`。 这种方法有助于避免与 [HOCON](https://github.com/lightbend/config/blob/main/HOCON.md) 中表示未定义的对象的 `null` 类型混淆。
+
+声明复杂类型(例如 **decimal**、**array**、**map** 和 **row**)时,请注意具体注意事项。
+- 声明decimal类型时,需要设置精度(precision)和小数位数(scale),类型定义遵循“decimal(precision, scale)”格式。 需要强调的是,十进制类型的声明必须用 `"` 括起来;不能像基本类型一样直接使用类型名称。例如,当声明精度为 10、小数位数为 2 的十进制字段时,您可以指定字段类型为`"decimal(10,2)"`。
+- 声明array类型时,需要指定元素类型,类型定义遵循 `array` 格式,其中 `T` 代表元素类型。元素类型包括`int`,`string`,`boolean`,`tinyint`,`smallint`,`bigint`,`float` 和 `double`。与十进制类型声明类似,它也用 `"` 括起来。例如,在声明具有整数数组的字段时,将字段类型指定为 `"array"`。
+- 声明map类型时,需要指定键和值类型。map类型定义遵循`map`格式,其中`K`表示键类型,`V`表示值类型。 `K`可以是任何基本类型和十进制类型,`V`可以是 SeaTunnel 支持的任何类型。 与之前的类型声明类似,map类型声明必须用双引号引起来。 例如,当声明一个map类型的字段时,键类型为字符串,值类型为整数,则可以将该字段声明为`"map"`。
+- 声明row类型时,需要定义一个 [HOCON](https://github.com/lightbend/config/blob/main/HOCON.md) 对象来描述字段及其类型。 字段类型可以是 SeaTunnel 支持的任何类型。 例如,当声明包含整数字段“a”和字符串字段“b”的行类型时,可以将其声明为“{a = int, b = string}”。 将定义作为字符串括在 `"` 中也是可以接受的,因此 `"{a = int, b = string}"` 相当于 `{a = int, c = string}`。由于 HOCON 与 JSON 兼容, `"{\"a\":\"int\", \"b\":\"string\"}"` 等价于 `"{a = int, b = string}"`。
+
+以下是复杂类型声明的示例:
+
+```hocon
+schema {
+ fields {
+ c_decimal = "decimal(10, 2)"
+ c_array = "array"
+ c_row = {
+ c_int = int
+ c_string = string
+ c_row = {
+ c_int = int
+ }
+ }
+ # 在泛型中Hocon风格声明行类型
+ map0 = "map"
+ # 在泛型中Json风格声明行类型
+ map1 = "map"
+ }
+}
+```
+
+### 主键(PrimaryKey)
+
+主键是用于定义模式中主键的配置,它包含name、columns字段。
+
+```
+primaryKey {
+ name = id
+ columns = [id]
+}
+```
+
+| 字段 | 是否必须 | 默认值 | 描述 |
+|:--------|:-----|:----|---------|
+| name | 是 | - | 主键名称 |
+| columns | 是 | - | 主键中的列列表 |
+
+### 约束键(constraintKeys)
+
+约束键是用于定义模式中约束键的配置列表,它包含constraintName,constraintType,constraintColumns字段。
+
+```
+constraintKeys = [
+ {
+ constraintName = "id_index"
+ constraintType = KEY
+ constraintColumns = [
+ {
+ columnName = "id"
+ sortType = ASC
+ }
+ ]
+ },
+ ]
+```
+
+| 字段 | 是否必须 | 默认值 | 描述 |
+|:------------------|:-----|:----|------------------------------------------------------------------------|
+| constraintName | 是 | - | 约束键的名称 |
+| constraintType | 否 | KEY | 约束键的类型 |
+| constraintColumns | 是 | - | PrimaryKey中的列列表,每列应包含constraintType和sortType,sortType支持ASC和DESC,默认为ASC |
+
+#### 目前支持哪些约束类型
+
+| 约束类型 | 描述 |
+|:-----------|:----|
+| INDEX_KEY | 键 |
+| UNIQUE_KEY | 唯一键 |
+
+## 如何使用schema
+
+### 推荐
+
+```
+source {
+ FakeSource {
+ parallelism = 2
+ result_table_name = "fake"
+ row.num = 16
+ schema {
+ table = "FakeDatabase.FakeTable"
+ columns = [
+ {
+ name = id
+ type = bigint
+ nullable = false
+ defaultValue = 0
+ comment = "primary key id"
+ },
+ {
+ name = name
+ type = "string"
+ nullable = true
+ comment = "name"
+ },
+ {
+ name = age
+ type = int
+ nullable = true
+ comment = "age"
+ }
+ ]
+ primaryKey {
+ name = "id"
+ columnNames = [id]
+ }
+ constraintKeys = [
+ {
+ constraintName = "unique_name"
+ constraintType = UNIQUE_KEY
+ constraintColumns = [
+ {
+ columnName = "name"
+ sortType = ASC
+ }
+ ]
+ },
+ ]
+ }
+ }
+}
+```
+
+### 已弃用
+
+如果你只需要定义列,你可以使用字段来定义列,这是一种简单的方式,但将来会被删除。
+
+```
+source {
+ FakeSource {
+ parallelism = 2
+ result_table_name = "fake"
+ row.num = 16
+ schema = {
+ fields {
+ id = bigint
+ c_map = "map"
+ c_array = "array"
+ c_string = string
+ c_boolean = boolean
+ c_tinyint = tinyint
+ c_smallint = smallint
+ c_int = int
+ c_bigint = bigint
+ c_float = float
+ c_double = double
+ c_decimal = "decimal(2, 1)"
+ c_bytes = bytes
+ c_date = date
+ c_timestamp = timestamp
+ }
+ }
+ }
+}
+```
+
+## 我们什么时候应该使用它,什么时候不应该使用它
+
+如果选项中有`schema`配置项目,则连接器可以自定义schema。 比如 `Fake` `Pulsar` `Http` 源连接器等。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/concept/sink-options-placeholders.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/concept/sink-options-placeholders.md
new file mode 100644
index 000000000000..2553feb549fc
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/concept/sink-options-placeholders.md
@@ -0,0 +1,110 @@
+# Sink 参数占位符
+
+## 介绍
+
+SeaTunnel 提供了 Sink 参数占位符自动替换功能,可让您通过占位符获取上游表元数据。
+
+当您需要动态获取上游表元数据(例如多表写入)时,此功能至关重要。
+
+本文档将指导您如何使用这些占位符以及如何有效地利用它们。
+
+## 支持的引擎
+
+> SeaTunnel Zeta
+> Flink
+> Spark
+
+## 占位符变量
+
+占位符主要通过以下表达式实现:
+
+- `${database_name}`
+ - 用于获取上游表中的数据库名称
+ - 也可以通过表达式指定默认值:`${database_name:default_my_db}`
+- `${schema_name}`
+ - 用于获取上游表中的 schema 名称
+ - 也可以通过表达式指定默认值:`${schema_name:default_my_schema}`
+- `${table_name}`
+ - 用于获取上游表中的 table 名称
+ - 也可以通过表达式指定默认值:`${table_name:default_my_table}`
+- `${schema_full_name}`
+ - 用于获取上游表中的 schema 全路径名称,包含 database/schema 名称
+- `${table_full_name}`
+ - 用于获取上游表中的 table 全路径名称,包含 database/schema/table 名称
+- `${primary_key}`
+ - 用于获取上游表中的主键字段名称列表
+- `${unique_key}`
+ - 用于获取上游表中的唯一键字段名称列表
+- `${field_names}`
+ - 用于获取上游表中的所有字段名称列表
+
+## 配置
+
+*先决条件*:
+- 确认 Sink 连接器已经支持了 `TableSinkFactory` API
+
+### 配置示例 1
+
+```hocon
+env {
+ // ignore...
+}
+source {
+ MySQL-CDC {
+ // ignore...
+ }
+}
+
+transform {
+ // ignore...
+}
+
+sink {
+ jdbc {
+ url = "jdbc:mysql://localhost:3306"
+ driver = "com.mysql.cj.jdbc.Driver"
+ user = "root"
+ password = "123456"
+
+ database = "${database_name}_test"
+ table = "${table_name}_test"
+ primary_keys = ["${primary_key}"]
+ }
+}
+```
+
+### 配置示例 2
+
+```hocon
+env {
+ // ignore...
+}
+source {
+ Oracle-CDC {
+ // ignore...
+ }
+}
+
+transform {
+ // ignore...
+}
+
+sink {
+ jdbc {
+ url = "jdbc:mysql://localhost:3306"
+ driver = "com.mysql.cj.jdbc.Driver"
+ user = "root"
+ password = "123456"
+
+ database = "${schema_name}_test"
+ table = "${table_name}_test"
+ primary_keys = ["${primary_key}"]
+ }
+}
+```
+
+占位符的替换将在连接器启动之前完成,确保 Sink 参数在使用前已准备就绪。
+若该占位符变量没有被替换,则可能是上游表元数据缺少该选项,例如:
+- `mysql` source 连接器不包含 `${schema_name}` 元数据
+- `oracle` source 连接器不包含 `${databse_name}` 元数据
+- ...
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/concept/speed-limit.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/concept/speed-limit.md
new file mode 100644
index 000000000000..51007269dd05
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/concept/speed-limit.md
@@ -0,0 +1,43 @@
+# 速度控制
+
+## 介绍
+
+SeaTunnel提供了强大的速度控制功能允许你管理数据同步的速率。当你需要确保在系统之间数据传输的高效和可控这个功能是至关重要的。
+速度控制主要由两个关键参数控制:`read_limit.rows_per_second` 和 `read_limit.bytes_per_second`。
+本文档将指导您如何使用这些参数以及如何有效地利用它们。
+
+## 支持这些引擎
+
+> SeaTunnel Zeta
+> Flink
+> Spark
+
+## 配置
+
+要使用速度控制功能,你需要在job配置中设置`read_limit.rows_per_second` 或 `read_limit.bytes_per_second`参数。
+
+配置文件中env配置示例:
+
+```hocon
+env {
+ job.mode=STREAMING
+ job.name=SeaTunnel_Job
+ read_limit.bytes_per_second=7000000
+ read_limit.rows_per_second=400
+}
+source {
+ MySQL-CDC {
+ // ignore...
+ }
+}
+transform {
+}
+sink {
+ Console {
+ }
+}
+```
+
+我们在`env`参数中放了`read_limit.bytes_per_second` 和 `read_limit.rows_per_second`来完成速度控制的配置。
+你可以同时配置这两个参数,或者只配置其中一个。每个`value`的值代表每个线程被限制的最大速率。
+因此,在配置各个值时,还需要同时考虑你任务的并行性。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/concept/sql-config.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/concept/sql-config.md
new file mode 100644
index 000000000000..7defa0010b24
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/concept/sql-config.md
@@ -0,0 +1,189 @@
+# SQL配置文件
+
+## SQL配置文件结构
+
+`SQL`配置文件类似下面这样:
+
+### SQL
+
+```sql
+/* config
+env {
+ parallelism = 1
+ job.mode = "BATCH"
+}
+*/
+
+CREATE TABLE source_table WITH (
+ 'connector'='jdbc',
+ 'type'='source',
+ 'url' = 'jdbc:mysql://localhost:3306/seatunnel',
+ 'driver' = 'com.mysql.cj.jdbc.Driver',
+ 'user' = 'root',
+ 'password' = '123456',
+ 'query' = 'select * from source',
+ 'properties'= '{
+ useSSL = false,
+ rewriteBatchedStatements = true
+ }'
+);
+
+CREATE TABLE sink_table WITH (
+ 'connector'='jdbc',
+ 'type'='sink',
+ 'url' = 'jdbc:mysql://localhost:3306/seatunnel',
+ 'driver' = 'com.mysql.cj.jdbc.Driver',
+ 'user' = 'root',
+ 'password' = '123456',
+ 'generate_sink_sql' = 'true',
+ 'database' = 'seatunnel',
+ 'table' = 'sink'
+);
+
+INSERT INTO sink_table SELECT id, name, age, email FROM source_table;
+```
+
+## `SQL`配置文件说明
+
+### 通用配置
+
+```sql
+/* config
+env {
+ parallelism = 1
+ job.mode = "BATCH"
+}
+*/
+```
+
+在`SQL`文件中通过 `/* config */` 注释定义通用配置部分,内部可以使用`hocon`格式定义通用的配置,如`env`等。
+
+### SOURCE SQL语法
+
+```sql
+CREATE TABLE source_table WITH (
+ 'connector'='jdbc',
+ 'type'='source',
+ 'url' = 'jdbc:mysql://localhost:3306/seatunnel',
+ 'driver' = 'com.mysql.cj.jdbc.Driver',
+ 'user' = 'root',
+ 'password' = '123456',
+ 'query' = 'select * from source',
+ 'properties' = '{
+ useSSL = false,
+ rewriteBatchedStatements = true
+ }'
+);
+```
+
+* 使用 `CREATE TABLE ... WITH (...)` 语法可创建源端表映射, `TABLE`表名为源端映射的表名,`WITH`语法中为源端相关的配置参数
+* 在WITH语法中有两个固定参数:`connector` 和 `type`,分别表示连接器插件名(如:`jdbc`、`FakeSource`等)和源端类型(固定为:`source`)
+* 其它参数名可以参考对应连接器插件的相关配置参数,但是格式需要改为`'key' = 'value',`的形式
+* 如果`'value'`为一个子配置,可以直接使用`hocon`格式的字符串,注意:如果使用`hocon`格式的子配置,内部的属性项之间必须用`,`分隔!如:
+
+```sql
+'properties' = '{
+ useSSL = false,
+ rewriteBatchedStatements = true
+}'
+```
+
+* 如果在`'value'`中使用到`'`,需要用`''`进行转义,如:
+
+```sql
+'query' = 'select * from source where name = ''Joy Ding'''
+```
+
+### SINK SQL语法
+
+```sql
+CREATE TABLE sink_table WITH (
+ 'connector'='jdbc',
+ 'type'='sink',
+ 'url' = 'jdbc:mysql://localhost:3306/seatunnel',
+ 'driver' = 'com.mysql.cj.jdbc.Driver',
+ 'user' = 'root',
+ 'password' = '123456',
+ 'generate_sink_sql' = 'true',
+ 'database' = 'seatunnel',
+ 'table' = 'sink'
+);
+```
+
+* 使用 `CREATE TABLE ... WITH (...)` 语法可创建目标端表映射, `TABLE`表名为目标端映射的表名,`WITH`语法中为目标端相关的配置参数
+* 在WITH语法中有两个固定参数:`connector` 和 `type`,分别表示连接器插件名(如:`jdbc`、`console`等)和目标端类型(固定为:`sink`)
+* 其它参数名可以参考对应连接器插件的相关配置参数,但是格式需要改为`'key' = 'value',`的形式
+
+### INSERT INTO SELECT语法
+
+```sql
+INSERT INTO sink_table SELECT id, name, age, email FROM source_table;
+```
+
+* `SELECT FROM` 部分为源端映射表的表名,`SELECT` 部分的语法参考:[SQL-transform](../transform-v2/sql.md) `query` 配置项
+* `INSERT INTO` 部分为目标端映射表的表名
+* 注意:该语法**不支持**在 `INSERT` 中指定字段,如:`INSERT INTO sink_table (id, name, age, email) SELECT id, name, age, email FROM source_table;`
+
+### INSERT INTO SELECT TABLE语法
+
+```sql
+INSERT INTO sink_table SELECT source_table;
+```
+
+* `SELECT` 部分直接使用源端映射表的表名,表示将源端表的所有数据插入到目标端表中
+* 使用该语法不会生成`trasform`的相关配置,这种语法一般用在多表同步的场景,示例:
+
+```sql
+CREATE TABLE source_table WITH (
+ 'connector'='jdbc',
+ 'type' = 'source',
+ 'url' = 'jdbc:mysql://127.0.0.1:3306/seatunnel',
+ 'driver' = 'com.mysql.cj.jdbc.Driver',
+ 'user' = 'root',
+ 'password' = '123456',
+ 'table_list' = '[
+ {
+ table_path = "source.table1"
+ },
+ {
+ table_path = "source.table2",
+ query = "select * from source.table2"
+ }
+ ]'
+);
+
+CREATE TABLE sink_table WITH (
+ 'connector'='jdbc',
+ 'type' = 'sink',
+ 'url' = 'jdbc:mysql://127.0.0.1:3306/seatunnel',
+ 'driver' = 'com.mysql.cj.jdbc.Driver',
+ 'user' = 'root',
+ 'password' = '123456',
+ 'generate_sink_sql' = 'true',
+ 'database' = 'sink'
+);
+
+INSERT INTO sink_table SELECT source_table;
+```
+
+### CREATE TABLE AS语法
+
+```sql
+CREATE TABLE temp1 AS SELECT id, name, age, email FROM source_table;
+```
+
+* 该语法可以将一个`SELECT`查询结果作为一个临时表,用于的`INSERT INTO`操作
+* `SELECT` 部分的语法参考:[SQL Transform](../transform-v2/sql.md) `query` 配置项
+
+```sql
+CREATE TABLE temp1 AS SELECT id, name, age, email FROM source_table;
+
+INSERT INTO sink_table SELECT * FROM temp1;
+```
+
+## SQL配置文件任务提交示例
+
+```bash
+./bin/seatunnel.sh --config ./config/sample.sql
+```
+
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/Config-Encryption-Decryption.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/Config-Encryption-Decryption.md
new file mode 100644
index 000000000000..e7b13aea86a7
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/Config-Encryption-Decryption.md
@@ -0,0 +1,181 @@
+# 配置文件加密和解密
+
+## 介绍
+
+在大多数生产环境中,需要对敏感的配置项(如密码)进行加密,不能以明文形式存储。SeaTunnel 为此提供了一个方便的一站式解决方案。
+
+## 如何使用
+
+SeaTunnel 具备Base64编码和解码的功能,但不建议在生产环境中使用,SeaTunnel 建议用户根据自身需求,实现个性化的加密和解密逻辑。您可以参考本章节[如何实现用户自定义的加密和解密](#如何实现用户自定义的加密和解密)以获取更多相关细节。
+
+Base64编码支持加密以下参数:
+- username
+- password
+- auth
+
+接下来,将展示如何快速使用 SeaTunnel 自带的 `base64` 加密功能:
+
+1. 在配置文件的环境变量(env)部分新增了一个选项 `shade.identifier`。此选项用于表示您想要使用的加密方法。
+2. 在这个示例中,我们在配置文件中添加了 `shade.identifier = base64`,如下所示:
+
+ ```hocon
+ #
+ # Licensed to the Apache Software Foundation (ASF) under one or more
+ # contributor license agreements. See the NOTICE file distributed with
+ # this work for additional information regarding copyright ownership.
+ # The ASF licenses this file to You under the Apache License, Version 2.0
+ # (the "License"); you may not use this file except in compliance with
+ # the License. You may obtain a copy of the License at
+ #
+ # http://www.apache.org/licenses/LICENSE-2.0
+ #
+ # Unless required by applicable law or agreed to in writing, software
+ # distributed under the License is distributed on an "AS IS" BASIS,
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ # See the License for the specific language governing permissions and
+ # limitations under the License.
+ #
+
+ env {
+ parallelism = 1
+ shade.identifier = "base64"
+ }
+
+ source {
+ MySQL-CDC {
+ result_table_name = "fake"
+ parallelism = 1
+ server-id = 5656
+ port = 56725
+ hostname = "127.0.0.1"
+ username = "seatunnel"
+ password = "seatunnel_password"
+ database-name = "inventory_vwyw0n"
+ table-name = "products"
+ base-url = "jdbc:mysql://localhost:56725"
+ }
+ }
+
+ transform {
+ }
+
+ sink {
+ # 将数据输出到 Clickhouse。
+ Clickhouse {
+ host = "localhost:8123"
+ database = "default"
+ table = "fake_all"
+ username = "seatunnel"
+ password = "seatunnel_password"
+
+ # cdc options
+ primary_key = "id"
+ support_upsert = true
+ }
+ }
+ ```
+3. 通过Shell脚本调用不同的计算引擎来对配置文件进行加密操作。在本示例中,我们使用 Zeta 引擎对配置文件进行加密。
+
+ ```shell
+ ${SEATUNNEL_HOME}/bin/seatunnel.sh --config config/v2.batch.template --encrypt
+ ```
+
+ 然后,您可以在终端中看到加密后的配置文件。
+
+ ```log
+ 2023-02-20 17:50:58,319 INFO org.apache.seatunnel.core.starter.command.ConfEncryptCommand - Encrypt config:
+ {
+ "env" : {
+ "parallelism" : 1,
+ "shade.identifier" : "base64"
+ },
+ "source" : [
+ {
+ "base-url" : "jdbc:mysql://localhost:56725",
+ "hostname" : "127.0.0.1",
+ "password" : "c2VhdHVubmVsX3Bhc3N3b3Jk",
+ "port" : 56725,
+ "database-name" : "inventory_vwyw0n",
+ "parallelism" : 1,
+ "result_table_name" : "fake",
+ "table-name" : "products",
+ "plugin_name" : "MySQL-CDC",
+ "server-id" : 5656,
+ "username" : "c2VhdHVubmVs"
+ }
+ ],
+ "transform" : [],
+ "sink" : [
+ {
+ "database" : "default",
+ "password" : "c2VhdHVubmVsX3Bhc3N3b3Jk",
+ "support_upsert" : true,
+ "host" : "localhost:8123",
+ "plugin_name" : "Clickhouse",
+ "primary_key" : "id",
+ "table" : "fake_all",
+ "username" : "c2VhdHVubmVs"
+ }
+ ]
+ }
+ ```
+4. 当然,不仅支持加密配置文件,还支持对配置文件的解密。如果用户想要查看解密后的配置文件,可以执行以下命令:
+
+ ```shell
+ ${SEATUNNEL_HOME}/bin/seatunnel.sh --config config/v2.batch.template --decrypt
+ ```
+
+## 如何实现用户自定义的加密和解密
+
+如果您希望自定义加密方法和加密配置,本章节将帮助您解决问题。
+
+1. 创建一个 java maven 项目
+
+2. 在 maven 依赖中添加 `seatunnel-api` 模块,如下所示:
+
+ ```xml
+
+ org.apache.seatunnel
+ seatunnel-api
+ ${seatunnel.version}
+
+ ```
+3. 创建一个 java 类并实现 `ConfigShade` 接口,该接口包含以下方法:
+
+ ```java
+ /**
+ * The interface that provides the ability to encrypt and decrypt {@link
+ * org.apache.seatunnel.shade.com.typesafe.config.Config}
+ */
+ public interface ConfigShade {
+
+ /**
+ * The unique identifier of the current interface, used it to select the correct {@link
+ * ConfigShade}
+ */
+ String getIdentifier();
+
+ /**
+ * Encrypt the content
+ *
+ * @param content The content to encrypt
+ */
+ String encrypt(String content);
+
+ /**
+ * Decrypt the content
+ *
+ * @param content The content to decrypt
+ */
+ String decrypt(String content);
+
+ /** To expand the options that user want to encrypt */
+ default String[] sensitiveOptions() {
+ return new String[0];
+ }
+ }
+ ```
+4. 在 `resources/META-INF/services` 目录下添加 `org.apache.seatunnel.api.configuration.ConfigShade`
+5. 将其打成 jar 包, 并添加到 `${SEATUNNEL_HOME}/lib` 目录下。
+6. 将选项 `shade.identifier` 的值更改为上面定义在配置文件中的 `ConfigShade#getIdentifier` 的值。
+
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/formats/avro.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/formats/avro.md
new file mode 100644
index 000000000000..7176f4e507fb
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/formats/avro.md
@@ -0,0 +1,111 @@
+# Avro 格式
+
+Avro 在流式数据处理管道中非常流行。现在seatunnel在kafka连接器中支持Avro格式
+
+# 怎样用
+
+## Kafka 使用示例
+
+- 模拟随机生成数据源,并以 Avro 的格式 写入 Kafka 的实例
+
+```bash
+env {
+ parallelism = 1
+ job.mode = "BATCH"
+}
+
+source {
+ FakeSource {
+ row.num = 90
+ schema = {
+ fields {
+ c_map = "map"
+ c_array = "array"
+ c_string = string
+ c_boolean = boolean
+ c_tinyint = tinyint
+ c_smallint = smallint
+ c_int = int
+ c_bigint = bigint
+ c_float = float
+ c_double = double
+ c_bytes = bytes
+ c_date = date
+ c_decimal = "decimal(38, 18)"
+ c_timestamp = timestamp
+ c_row = {
+ c_map = "map"
+ c_array = "array"
+ c_string = string
+ c_boolean = boolean
+ c_tinyint = tinyint
+ c_smallint = smallint
+ c_int = int
+ c_bigint = bigint
+ c_float = float
+ c_double = double
+ c_bytes = bytes
+ c_date = date
+ c_decimal = "decimal(38, 18)"
+ c_timestamp = timestamp
+ }
+ }
+ }
+ result_table_name = "fake"
+ }
+}
+
+sink {
+ Kafka {
+ bootstrap.servers = "kafkaCluster:9092"
+ topic = "test_avro_topic_fake_source"
+ format = avro
+ }
+}
+```
+
+- 从 kafka 读取 avro 格式的数据并打印到控制台的示例
+
+```bash
+env {
+ parallelism = 1
+ job.mode = "BATCH"
+}
+
+source {
+ Kafka {
+ bootstrap.servers = "kafkaCluster:9092"
+ topic = "test_avro_topic"
+ result_table_name = "kafka_table"
+ start_mode = "earliest"
+ format = avro
+ format_error_handle_way = skip
+ schema = {
+ fields {
+ id = bigint
+ c_map = "map"
+ c_array = "array"
+ c_string = string
+ c_boolean = boolean
+ c_tinyint = tinyint
+ c_smallint = smallint
+ c_int = int
+ c_bigint = bigint
+ c_float = float
+ c_double = double
+ c_decimal = "decimal(2, 1)"
+ c_bytes = bytes
+ c_date = date
+ c_timestamp = timestamp
+ }
+ }
+ }
+}
+
+sink {
+ Console {
+ source_table_name = "kafka_table"
+ }
+}
+```
+
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/formats/canal-json.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/formats/canal-json.md
new file mode 100644
index 000000000000..92c4338eb564
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/formats/canal-json.md
@@ -0,0 +1,115 @@
+# Canal 格式
+
+变更数据捕获格式:
+序列化模式、反序列化模式
+
+Canal是一款CDC(变更数据捕获)工具,能够实时捕获MySQL的数据变化并将其流式传输到其他系统中。Canal为变更日志提供了一种统一的格式,并支持使用 JSON 和 protobuf(Canal默认使用protobuf)进行消息的序列化
+
+SeaTunnel 能够解析 Canal 的 JSON 消息,并将其转化为 INSERT/UPDATE/DELETE 消息,进而输入到 SeaTunnel 系统中。这个特性在很多场景下都显得非常有用,例如:
+
+ 将增量数据从数据库同步到其他系统
+ 审计日志
+ 数据库的实时物化视图
+ 关联维度数据库的变更历史,等等。
+
+SeaTunnel 还支持将 SeaTunnel 中的 INSERT/UPDATE/DELETE 消息编码为 Canal JSON 消息,并将其发送到类似 Kafka 这样的存储中。然而,目前 SeaTunnel 无法将 UPDATE_BEFORE 和 UPDATE_AFTER 合并为一个单一的UPDATE消息。因此,SeaTunnel将 UPDATE_BEFORE 和 UPDATE_AFTER 编码为 Canal的 DELETE 和 INSERT 消息来进行
+
+# 格式选项
+
+| 选项 | 默认值 | 是否需要 | 描述 |
+|--------------------------------|--------|------|------------------------------------------------------------------------------------|
+| format | (none) | 是 | 指定要使用的格式,这里应该是 `canal_json` |
+| canal_json.ignore-parse-errors | false | 否 | 跳过解析错误的字段和行,而不是失败。出现错误的字段将被设置为null |
+| canal_json.database.include | (none) | 否 | 正则表达式,可选,通过正则匹配 Canal 记录中的`database`元字段来仅读取特定数据库变更日志行。此字符串Pattern模式与Java的Pattern兼容 |
+| canal_json.table.include | (none) | 否 | 正则表达式,可选,通过正则匹配 Canal 记录中的`table`元字段来仅读取特定数据库变更日志行。此字符串Pattern模式与Java的Pattern兼容 |
+
+# 如何使用
+
+## Kafka 使用示例
+
+Canal为变更日志提供了一种统一的格式,以下是一个从MySQL products 表捕获的变更操作的简单示例
+
+```bash
+{
+ "data": [
+ {
+ "id": "111",
+ "name": "scooter",
+ "description": "Big 2-wheel scooter",
+ "weight": "5.18"
+ }
+ ],
+ "database": "inventory",
+ "es": 1589373560000,
+ "id": 9,
+ "isDdl": false,
+ "mysqlType": {
+ "id": "INTEGER",
+ "name": "VARCHAR(255)",
+ "description": "VARCHAR(512)",
+ "weight": "FLOAT"
+ },
+ "old": [
+ {
+ "weight": "5.15"
+ }
+ ],
+ "pkNames": [
+ "id"
+ ],
+ "sql": "",
+ "sqlType": {
+ "id": 4,
+ "name": 12,
+ "description": 12,
+ "weight": 7
+ },
+ "table": "products",
+ "ts": 1589373560798,
+ "type": "UPDATE"
+}
+```
+
+注:请参考 [Canal 文档](https://github.com/alibaba/canal/wiki) 以了解每个字段的含义
+
+MySQL 的 products 表有 4 列(id、name、description 和 weight)
+上述 JSON 消息是产品表的一个更新变更事件,其中 id = 111 的行的 weight 值从 5.15 变为 5.18
+假设此表的 binlog 的消息已经同步到 Kafka topic,那么我们可以使用下面的 SeaTunnel 示例来消费这个主题并体现变更事件
+
+```bash
+env {
+ parallelism = 1
+ job.mode = "BATCH"
+}
+
+source {
+ Kafka {
+ bootstrap.servers = "kafkaCluster:9092"
+ topic = "products_binlog"
+ result_table_name = "kafka_name"
+ start_mode = earliest
+ schema = {
+ fields {
+ id = "int"
+ name = "string"
+ description = "string"
+ weight = "string"
+ }
+ },
+ format = canal_json
+ }
+
+}
+
+transform {
+}
+
+sink {
+ Kafka {
+ bootstrap.servers = "localhost:9092"
+ topic = "consume-binlog"
+ format = canal_json
+ }
+}
+```
+
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/formats/cdc-compatible-debezium-json.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/formats/cdc-compatible-debezium-json.md
new file mode 100644
index 000000000000..e34a5b39a223
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/formats/cdc-compatible-debezium-json.md
@@ -0,0 +1,55 @@
+# CDC 兼容 Debezium-json
+
+SeaTunnel 支持将 cdc 记录解析为 Debezium-JSON 消息,并发布到 MQ (kafka) 等消息系统中
+
+这个特性在很多场景下都非常实用,例如,它可以实现与 Debezium 生态系统的兼容性
+
+# 如何使用
+
+## MySQL-CDC 流入 Kafka
+
+```bash
+env {
+ parallelism = 1
+ job.mode = "STREAMING"
+ checkpoint.interval = 15000
+}
+
+source {
+ MySQL-CDC {
+ result_table_name = "table1"
+
+ base-url="jdbc:mysql://localhost:3306/test"
+ "startup.mode"=INITIAL
+ table-names=[
+ "database1.t1",
+ "database1.t2",
+ "database2.t1"
+ ]
+
+ # compatible_debezium_json options
+ format = compatible_debezium_json
+ debezium = {
+ # include schema into kafka message
+ key.converter.schemas.enable = false
+ value.converter.schemas.enable = false
+ # include ddl
+ include.schema.changes = true
+ # topic prefix
+ database.server.name = "mysql_cdc_1"
+ }
+ }
+}
+
+sink {
+ Kafka {
+ source_table_name = "table1"
+
+ bootstrap.servers = "localhost:9092"
+
+ # compatible_debezium_json options
+ format = compatible_debezium_json
+ }
+}
+```
+
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/formats/debezium-json.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/formats/debezium-json.md
new file mode 100644
index 000000000000..3e70a5d31ed6
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/formats/debezium-json.md
@@ -0,0 +1,115 @@
+# Debezium 格式
+
+变更数据捕获格式:
+序列化模式、反序列化模式
+
+Debezium 是一套分布式服务,用于捕获数据库中的变化,以便您的应用程序可以看到这些变化并对其做出响应。Debezium 在变更事件流中记录每个数据库表中的所有行级变化,应用程序只需读取这些流,就可以按照它们发生的顺序看到变更事件
+
+SeaTunnel 支持将 Debezium JSON 消息解析为 INSERT/UPDATE/DELETE 消息并导入到 seatunnel 系统中。在许多情况下,利用这个特性是非常有用的,例如:
+
+ 将增量数据从数据库同步到其他系统
+ 审计日志
+ 数据库的实时物化视图
+ 关联维度数据库的变更历史,等等。
+
+SeaTunnel 还支持将 SeaTunnel 中的 INSERT/UPDATE/DELETE 消息解析为 Debezium JSON 消息,并将其发送到类似 Kafka 这样的存储中
+
+# 格式选项
+
+| 选项 | 默认值 | 是否需要 | 描述 |
+|-----------------------------------|--------|------|--------------------------------------|
+| format | (none) | 是 | 指定要使用的格式,这里应该是 'debezium_json'. |
+| debezium-json.ignore-parse-errors | false | 否 | 跳过有解析错误的字段和行而不是失败。如果出现错误,字段将设置为 null |
+
+# 如何使用
+
+## Kafka 使用示例
+
+Debezium 提供了一个统一的变更日志格式,下面是一个 MySQL products 表捕获的变更操作的简单示例
+
+```bash
+{
+ "before": {
+ "id": 111,
+ "name": "scooter",
+ "description": "Big 2-wheel scooter ",
+ "weight": 5.18
+ },
+ "after": {
+ "id": 111,
+ "name": "scooter",
+ "description": "Big 2-wheel scooter ",
+ "weight": 5.17
+ },
+ "source": {
+ "version": "1.1.1.Final",
+ "connector": "mysql",
+ "name": "dbserver1",
+ "ts_ms": 1589362330000,
+ "snapshot": "false",
+ "db": "inventory",
+ "table": "products",
+ "server_id": 223344,
+ "gtid": null,
+ "file": "mysql-bin.000003",
+ "pos": 2090,
+ "row": 0,
+ "thread": 2,
+ "query": null
+ },
+ "op": "u",
+ "ts_ms": 1589362330904,
+ "transaction": null
+}
+```
+
+注:请参考 [Debezium 文档](https://github.com/debezium/debezium/blob/v1.9.8.Final/documentation/modules/ROOT/pages/connectors/mysql.adoc#data-change-events) 以了解每个字段的含义
+
+MySQL 的 products 表有 4 列(id、name、description 和 weight)
+上述 JSON 消息是产品表的一个更新变更事件,其中 id = 111 的行的 weight 值从 5.18 变为 5.17
+假设消息已经同步到 Kafka 主题 products_binlog,那么我们可以使用以下的 SeaTunnel 配置来消费这个主题并通过 Debezium 格式解释变更事件。
+
+在此配置中,您必须指定 `schema` 和 `debezium_record_include_schema` 选项:
+- `schema` 应与您的表格式相同
+- 如果您的 json 数据包含 `schema` 字段,`debezium_record_include_schema` 应为 true,如果您的 json 数据不包含 `schema` 字段,`debezium_record_include_schema` 应为 false
+- `{"schema" : {}, "payload": { "before" : {}, "after": {} ... } }` --> `true`
+- `{"before" : {}, "after": {} ... }` --> `false`"
+
+```bash
+env {
+ parallelism = 1
+ job.mode = "BATCH"
+}
+
+source {
+ Kafka {
+ bootstrap.servers = "kafkaCluster:9092"
+ topic = "products_binlog"
+ result_table_name = "kafka_name"
+ start_mode = earliest
+ schema = {
+ fields {
+ id = "int"
+ name = "string"
+ description = "string"
+ weight = "string"
+ }
+ }
+ debezium_record_include_schema = false
+ format = debezium_json
+ }
+
+}
+
+transform {
+}
+
+sink {
+ Kafka {
+ bootstrap.servers = "kafkaCluster:9092"
+ topic = "consume-binlog"
+ format = debezium_json
+ }
+}
+```
+
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/formats/kafka-compatible-kafkaconnect-json.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/formats/kafka-compatible-kafkaconnect-json.md
new file mode 100644
index 000000000000..d0ceb58ac6c9
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/formats/kafka-compatible-kafkaconnect-json.md
@@ -0,0 +1,47 @@
+# Kafka source 兼容 kafka-connect-json
+
+Seatunnel 的 Kafka 连接器支持解析通过 Kafka Connect Source 抽取的数据,特别是从 Kafka Connect JDBC 和 Kafka Connect Debezium 抽取的数据
+
+# 如何使用
+
+## Kafka 流入 Mysql
+
+```bash
+env {
+ parallelism = 1
+ job.mode = "BATCH"
+}
+
+source {
+ Kafka {
+ bootstrap.servers = "localhost:9092"
+ topic = "jdbc_source_record"
+ result_table_name = "kafka_table"
+ start_mode = earliest
+ schema = {
+ fields {
+ id = "int"
+ name = "string"
+ description = "string"
+ weight = "string"
+ }
+ },
+ format = COMPATIBLE_KAFKA_CONNECT_JSON
+ }
+}
+
+
+sink {
+ Jdbc {
+ driver = com.mysql.cj.jdbc.Driver
+ url = "jdbc:mysql://localhost:3306/seatunnel"
+ user = st_user
+ password = seatunnel
+ generate_sink_sql = true
+ database = seatunnel
+ table = jdbc_sink
+ primary_keys = ["id"]
+ }
+}
+```
+
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/formats/ogg-json.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/formats/ogg-json.md
new file mode 100644
index 000000000000..7b64f5b5e41a
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/formats/ogg-json.md
@@ -0,0 +1,93 @@
+# Ogg 格式
+
+[Oracle GoldenGate](https://www.oracle.com/integration/goldengate/) (a.k.a ogg) 是一项托管服务,提供实时数据网格平台,该平台使用复制来保持数据高度可用,并支持实时分析。客户可以设计、执行和监控其数据复制和流数据处理解决方案,而无需分配或管理计算环境。 Ogg 为变更日志提供了统一的格式结构,并支持使用 JSON 序列化消息。
+
+SeaTunnel 支持将 Ogg JSON 消息解释为 Seatunnel 系统中的 INSERT/UPDATE/DELETE 消息。在许多情况下,这个特性带来了很多便利,例如
+
+ 将增量数据从数据库同步到其他系统
+ 审计日志
+ 数据库的实时物化视图
+ 关联维度数据库的变更历史,等等。
+
+SeaTunnel 还支持将 SeaTunnel 中的 INSERT/UPDATE/DELETE 消息转化为 Ogg JSON 消息,并将其发送到类似 Kafka 这样的存储中。然而,目前 SeaTunnel 无法将 UPDATE_BEFORE 和 UPDATE_AFTER 组合成单个 UPDATE 消息。因此,Seatunnel 将 UPDATE_BEFORE 和 UPDATE_AFTER 转化为 DELETE 和 INSERT Ogg 消息来实现
+
+# 格式选项
+
+| 选项 | 默认值 | 是否需要 | 描述 |
+|------------------------------|--------|------|------------------------------------------------------------------------------------|
+| format | (none) | 是 | 指定要使用的格式,这里应该是`-json` |
+| ogg_json.ignore-parse-errors | false | 否 | 跳过有解析错误的字段和行而不是失败。如果出现错误,字段将设置为 null |
+| ogg_json.database.include | (none) | 否 | 正则表达式,可选,通过正则匹配 Canal 记录中的`database`元字段来仅读取特定数据库变更日志行。此字符串Pattern模式与Java的Pattern兼容 |
+| ogg_json.table.include | (none) | 否 | 正则表达式,可选,通过正则匹配 Canal 记录中的 `table` 元字段来仅读取特定表的更改日志行。此字符串Pattern模式与Java的Pattern兼容 |
+
+# 如何使用 Ogg 格式
+
+## Kafka 使用示例
+
+Ogg 为变更日志提供了统一的格式,下面是从 Oracle PRODUCTS 表捕获变更操作的简单示例:
+
+```bash
+{
+ "before": {
+ "id": 111,
+ "name": "scooter",
+ "description": "Big 2-wheel scooter",
+ "weight": 5.18
+ },
+ "after": {
+ "id": 111,
+ "name": "scooter",
+ "description": "Big 2-wheel scooter",
+ "weight": 5.15
+ },
+ "op_type": "U",
+ "op_ts": "2020-05-13 15:40:06.000000",
+ "current_ts": "2020-05-13 15:40:07.000000",
+ "primary_keys": [
+ "id"
+ ],
+ "pos": "00000000000000000000143",
+ "table": "PRODUCTS"
+}
+```
+
+注:各字段含义请参考 [Debezium 文档](https://github.com/debezium/debezium/blob/v1.9.8.Final/documentation/modules/ROOT/pages/connectors/oracle.adoc#data-change-events)
+
+此 Oracle PRODUCTS 表有 4 列 (id, name, description 和 weight)
+上面的 JSON 消息是 products 表上的更新更改事件,其中 id = 111 的行的字段 `weight` 的值从 5.18 更改为 5.15。
+假设此表的 binlog 的消息已经同步到 Kafka topic,那么我们可以使用下面的 SeaTunnel 示例来消费这个 topic 并体现变更事件。
+
+```bash
+env {
+ parallelism = 1
+ job.mode = "STREAMING"
+}
+source {
+ Kafka {
+ bootstrap.servers = "127.0.0.1:9092"
+ topic = "ogg"
+ result_table_name = "kafka_name"
+ start_mode = earliest
+ schema = {
+ fields {
+ id = "int"
+ name = "string"
+ description = "string"
+ weight = "double"
+ }
+ },
+ format = ogg_json
+ }
+}
+sink {
+ jdbc {
+ url = "jdbc:mysql://127.0.0.1/test"
+ driver = "com.mysql.cj.jdbc.Driver"
+ user = "root"
+ password = "12345678"
+ table = "ogg"
+ primary_keys = ["id"]
+ }
+}
+```
+
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/sink.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/sink.md
new file mode 100644
index 000000000000..e69de29bb2d1
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/sink/Clickhouse.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/sink/Clickhouse.md
new file mode 100644
index 000000000000..2b5e23d55688
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/sink/Clickhouse.md
@@ -0,0 +1,179 @@
+# Clickhouse
+
+> Clickhouse 数据连接器
+
+## 支持引擎
+
+> Spark
+> Flink
+> SeaTunnel Zeta
+
+## 核心特性
+
+- [ ] [精准一次](../../concept/connector-v2-features.md)
+- [x] [cdc](../../concept/connector-v2-features.md)
+
+> Clickhouse sink 插件通过实现幂等写入可以达到精准一次,需要配合 aggregating merge tree 支持重复数据删除的引擎。
+
+## 描述
+
+用于将数据写入 Clickhouse。
+
+## 支持的数据源信息
+
+为了使用 Clickhouse 连接器,需要以下依赖项。它们可以通过 install-plugin.sh 或从 Maven 中央存储库下载。
+
+| 数据源 | 支持的版本 | 依赖 |
+|------------|-----------|------------------------------------------------------------------------------------------------------------|
+| Clickhouse | universal | [下载](https://mvnrepository.com/artifact/org.apache.seatunnel/seatunnel-connectors-v2/connector-clickhouse) |
+
+## 数据类型映射
+
+| SeaTunnel 数据类型 | Clickhouse 数据类型 |
+|----------------|-----------------------------------------------------------------------------------------------------------------------------------------------|
+| STRING | String / Int128 / UInt128 / Int256 / UInt256 / Point / Ring / Polygon MultiPolygon |
+| INT | Int8 / UInt8 / Int16 / UInt16 / Int32 |
+| BIGINT | UInt64 / Int64 / IntervalYear / IntervalQuarter / IntervalMonth / IntervalWeek / IntervalDay / IntervalHour / IntervalMinute / IntervalSecond |
+| DOUBLE | Float64 |
+| DECIMAL | Decimal |
+| FLOAT | Float32 |
+| DATE | Date |
+| TIME | DateTime |
+| ARRAY | Array |
+| MAP | Map |
+
+## 输出选项
+
+| 名称 | 类型 | 是否必须 | 默认值 | 描述 |
+|---------------------------------------|---------|------|-------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| host | String | Yes | - | `ClickHouse` 集群地址, 格式是`host:port` , 允许多个`hosts`配置. 例如 `"host1:8123,host2:8123"`. |
+| database | String | Yes | - | `ClickHouse` 数据库名称. |
+| table | String | Yes | - | 表名称. |
+| username | String | Yes | - | `ClickHouse` 用户账号. |
+| password | String | Yes | - | `ClickHouse` 用户密码. |
+| clickhouse.config | Map | No | | 除了上述必须由 `clickhouse-jdbc` 指定的必填参数外,用户还可以指定多个可选参数,这些参数涵盖了 `clickhouse-jdbc` 提供的所有[参数](https://github.com/ClickHouse/clickhouse-jdbc/tree/master/clickhouse-client#configuration). |
+| bulk_size | String | No | 20000 | 每次通过[Clickhouse-jdbc](https://github.com/ClickHouse/clickhouse-jdbc) 写入的行数,即默认是20000. |
+| split_mode | String | No | false | 此模式仅支持引擎为`Distributed`的 `clickhouse` 表。选项 `internal_replication` 应该是 `true` 。他们将在 seatunnel 中拆分分布式表数据,并直接对每个分片进行写入。分片权重定义为 `clickhouse` 将计算在内。 |
+| sharding_key | String | No | - | 使用 `split_mode` 时,将数据发送到哪个节点是个问题,默认为随机选择,但可以使用`sharding_key`参数来指定分片算法的字段。此选项仅在`split_mode`为 `true` 时有效. |
+| primary_key | String | No | - | 标记`clickhouse`表中的主键列,并根据主键执行INSERT/UPDATE/DELETE到`clickhouse`表. |
+| support_upsert | Boolean | No | false | 支持按查询主键更新插入行. |
+| allow_experimental_lightweight_delete | Boolean | No | false | 允许基于`MergeTree`表引擎实验性轻量级删除. |
+| common-options | | No | - | Sink插件查用参数,详见[Sink常用选项](common-options.md). |
+
+## 如何创建一个clickhouse 同步任务
+
+以下示例演示如何创建将随机生成的数据写入Clickhouse数据库的数据同步作业。
+
+```bash
+# Set the basic configuration of the task to be performed
+env {
+ parallelism = 1
+ job.mode = "BATCH"
+ checkpoint.interval = 1000
+}
+
+source {
+ FakeSource {
+ row.num = 2
+ bigint.min = 0
+ bigint.max = 10000000
+ split.num = 1
+ split.read-interval = 300
+ schema {
+ fields {
+ c_bigint = bigint
+ }
+ }
+ }
+}
+
+sink {
+ Clickhouse {
+ host = "127.0.0.1:9092"
+ database = "default"
+ table = "test"
+ username = "xxxxx"
+ password = "xxxxx"
+ }
+}
+```
+
+### 小提示
+
+> 1.[SeaTunnel 部署文档](../../start-v2/locally/deployment.md).
+> 2.需要在同步前提前创建要写入的表.
+> 3.当写入 ClickHouse 表,无需设置其结构,因为连接器会在写入前向 ClickHouse 查询当前表的结构信息.
+
+## Clickhouse 接收器配置
+
+```hocon
+sink {
+ Clickhouse {
+ host = "localhost:8123"
+ database = "default"
+ table = "fake_all"
+ username = "xxxxx"
+ password = "xxxxx"
+ clickhouse.config = {
+ max_rows_to_read = "100"
+ read_overflow_mode = "throw"
+ }
+ }
+}
+```
+
+## 切分模式
+
+```hocon
+sink {
+ Clickhouse {
+ host = "localhost:8123"
+ database = "default"
+ table = "fake_all"
+ username = "xxxxx"
+ password = "xxxxx"
+
+ # split mode options
+ split_mode = true
+ sharding_key = "age"
+ }
+}
+```
+
+## CDC(Change data capture) Sink
+
+```hocon
+sink {
+ Clickhouse {
+ host = "localhost:8123"
+ database = "default"
+ table = "fake_all"
+ username = "xxxxx"
+ password = "xxxxx"
+
+ # cdc options
+ primary_key = "id"
+ support_upsert = true
+ }
+}
+```
+
+## CDC(Change data capture) for *MergeTree engine
+
+```hocon
+sink {
+ Clickhouse {
+ host = "localhost:8123"
+ database = "default"
+ table = "fake_all"
+ username = "xxxxx"
+ password = "xxxxx"
+
+ # cdc options
+ primary_key = "id"
+ support_upsert = true
+ allow_experimental_lightweight_delete = true
+ }
+}
+```
+
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/sink/ClickhouseFile.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/sink/ClickhouseFile.md
new file mode 100644
index 000000000000..b36a2982f53f
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/sink/ClickhouseFile.md
@@ -0,0 +1,138 @@
+# ClickhouseFile
+
+> Clickhouse文件数据接收器
+
+## 描述
+
+该接收器使用clickhouse-local程序生成clickhouse数据文件,随后将其发送至clickhouse服务器,这个过程也称为bulkload。该接收器仅支持表引擎为 'Distributed'的表,且`internal_replication`选项需要设置为`true`。支持批和流两种模式。
+
+## 主要特性
+
+- [ ] [精准一次](../../concept/connector-v2-features.md)
+
+:::小提示
+
+你也可以采用JDBC的方式将数据写入Clickhouse。
+
+:::
+
+## 接收器选项
+
+| 名称 | 类型 | 是否必须 | 默认值 |
+|------------------------|---------|------|----------------------------------------|
+| host | string | yes | - |
+| database | string | yes | - |
+| table | string | yes | - |
+| username | string | yes | - |
+| password | string | yes | - |
+| clickhouse_local_path | string | yes | - |
+| sharding_key | string | no | - |
+| copy_method | string | no | scp |
+| node_free_password | boolean | no | false |
+| node_pass | list | no | - |
+| node_pass.node_address | string | no | - |
+| node_pass.username | string | no | "root" |
+| node_pass.password | string | no | - |
+| compatible_mode | boolean | no | false |
+| file_fields_delimiter | string | no | "\t" |
+| file_temp_path | string | no | "/tmp/seatunnel/clickhouse-local/file" |
+| common-options | | no | - |
+
+### host [string]
+
+`ClickHouse`集群地址,格式为`host:port`,允许同时指定多个`hosts`。例如`"host1:8123,host2:8123"`。
+
+### database [string]
+
+`ClickHouse`数据库名。
+
+### table [string]
+
+表名称。
+
+### username [string]
+
+连接`ClickHouse`的用户名。
+
+### password [string]
+
+连接`ClickHouse`的用户密码。
+
+### sharding_key [string]
+
+当ClickhouseFile需要拆分数据时,需要考虑的问题是当前数据需要发往哪个节点,默认情况下采用的是随机算法,我们也可以使用'sharding_key'参数为某字段指定对应的分片算法。
+
+### clickhouse_local_path [string]
+
+在spark节点上的clickhouse-local程序路径。由于每个任务都会被调用,所以每个spark节点上的clickhouse-local程序路径必须相同。
+
+### copy_method [string]
+
+为文件传输指定方法,默认为scp,可选值为scp和rsync。
+
+### node_free_password [boolean]
+
+由于seatunnel需要使用scp或者rsync进行文件传输,因此seatunnel需要clickhouse服务端访问权限。如果每个spark节点与clickhouse服务端都配置了免密登录,则可以将此选项配置为true,否则需要在node_pass参数中配置对应节点的密码。
+
+### node_pass [list]
+
+用来保存所有clickhouse服务器地址及其对应的访问密码。
+
+### node_pass.node_address [string]
+
+clickhouse服务器节点地址。
+
+### node_pass.username [string]
+
+clickhouse服务器节点用户名,默认为root。
+
+### node_pass.password [string]
+
+clickhouse服务器节点的访问密码。
+
+### compatible_mode [boolean]
+
+在低版本的Clickhouse中,clickhouse-local程序不支持`--path`参数,需要设置该参数来采用其他方式实现`--path`参数功能。
+
+### file_fields_delimiter [string]
+
+ClickHouseFile使用CSV格式来临时保存数据。但如果数据中包含CSV的分隔符,可能会导致程序异常。使用此配置可以避免该情况。配置的值必须正好为一个字符的长度。
+
+### file_temp_path [string]
+
+ClickhouseFile本地存储临时文件的目录。
+
+### common options
+
+Sink插件常用参数,请参考[Sink常用选项](common-options.md)获取更多细节信息。
+
+## 示例
+
+```hocon
+ClickhouseFile {
+ host = "192.168.0.1:8123"
+ database = "default"
+ table = "fake_all"
+ username = "default"
+ password = ""
+ clickhouse_local_path = "/Users/seatunnel/Tool/clickhouse local"
+ sharding_key = "age"
+ node_free_password = false
+ node_pass = [{
+ node_address = "192.168.0.1"
+ password = "seatunnel"
+ }]
+}
+```
+
+## 变更日志
+
+### 2.2.0-beta 2022-09-26
+
+- 支持将数据写入ClickHouse文件并迁移到ClickHouse数据目录
+
+### 随后版本
+
+- [BugFix] 修复生成的数据部分名称冲突BUG并改进文件提交逻辑 [3416](https://github.com/apache/seatunnel/pull/3416)
+- [Feature] 支持compatible_mode来兼容低版本的Clickhouse [3416](https://github.com/apache/seatunnel/pull/3416)
+
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/sink/Console.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/sink/Console.md
new file mode 100644
index 000000000000..43dff335132d
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/sink/Console.md
@@ -0,0 +1,124 @@
+# Console
+
+> Console 数据接收器
+
+## 支持连接器版本
+
+- 所有版本
+
+## 支持的引擎
+
+> Spark
+> Flink
+> SeaTunnel Zeta
+
+## 描述
+
+接收Source端传入的数据并打印到控制台。支持批同步和流同步两种模式。
+
+> 例如,来自上游的数据为 [`age: 12, name: jared`] ,则发送到控制台的内容为: `{"name":"jared","age":17}`
+
+## 主要特性
+
+- [ ] [精确一次](../../concept/connector-v2-features.md)
+
+## 接收器选项
+
+| 名称 | 类型 | 是否必须 | 默认值 | 描述 |
+|--------------------|---------|------|-----|---------------------------------------------------|
+| common-options | | 否 | - | Sink插件常用参数,请参考 [Sink常用选项](common-options.md) 了解详情 |
+| log.print.data | boolean | 否 | - | 确定是否应在日志中打印数据的标志。默认值为`true` |
+| log.print.delay.ms | int | 否 | - | 将每个数据项打印到日志之间的延迟(以毫秒为单位)。默认值为`0` |
+
+## 任务示例
+
+### 简单示例:
+
+> 随机生成的数据,包含两个字段,即 `name`(字符串类型)和 `age`(整型),写入控制台,并行度为 `1`
+
+```
+env {
+ parallelism = 1
+ job.mode = "STREAMING"
+}
+
+source {
+ FakeSource {
+ result_table_name = "fake"
+ schema = {
+ fields {
+ name = "string"
+ age = "int"
+ }
+ }
+ }
+}
+
+sink {
+ Console {
+ source_table_name = "fake"
+ }
+}
+```
+
+### 多数据源示例:
+
+> 多数据源示例,通过配置可以指定数据源写入指定接收器
+
+```
+env {
+ parallelism = 1
+ job.mode = "STREAMING"
+}
+
+source {
+ FakeSource {
+ result_table_name = "fake1"
+ schema = {
+ fields {
+ id = "int"
+ name = "string"
+ age = "int"
+ sex = "string"
+ }
+ }
+ }
+ FakeSource {
+ result_table_name = "fake2"
+ schema = {
+ fields {
+ name = "string"
+ age = "int"
+ }
+ }
+ }
+}
+
+sink {
+ Console {
+ source_table_name = "fake1"
+ }
+ Console {
+ source_table_name = "fake2"
+ }
+}
+```
+
+## 控制台示例数据
+
+控制台打印的输出:
+
+```
+2022-12-19 11:01:45,417 INFO org.apache.seatunnel.connectors.seatunnel.console.sink.ConsoleSinkWriter - output rowType: name, age
+2022-12-19 11:01:46,489 INFO org.apache.seatunnel.connectors.seatunnel.console.sink.ConsoleSinkWriter - subtaskIndex=0 rowIndex=1: SeaTunnelRow#tableId=-1 SeaTunnelRow#kind=INSERT: CpiOd, 8520946
+2022-12-19 11:01:46,490 INFO org.apache.seatunnel.connectors.seatunnel.console.sink.ConsoleSinkWriter - subtaskIndex=0 rowIndex=2: SeaTunnelRow#tableId=-1 SeaTunnelRow#kind=INSERT: eQqTs, 1256802974
+2022-12-19 11:01:46,490 INFO org.apache.seatunnel.connectors.seatunnel.console.sink.ConsoleSinkWriter - subtaskIndex=0 rowIndex=3: SeaTunnelRow#tableId=-1 SeaTunnelRow#kind=INSERT: UsRgO, 2053193072
+2022-12-19 11:01:46,490 INFO org.apache.seatunnel.connectors.seatunnel.console.sink.ConsoleSinkWriter - subtaskIndex=0 rowIndex=4: SeaTunnelRow#tableId=-1 SeaTunnelRow#kind=INSERT: jDQJj, 1993016602
+2022-12-19 11:01:46,490 INFO org.apache.seatunnel.connectors.seatunnel.console.sink.ConsoleSinkWriter - subtaskIndex=0 rowIndex=5: SeaTunnelRow#tableId=-1 SeaTunnelRow#kind=INSERT: rqdKp, 1392682764
+2022-12-19 11:01:46,490 INFO org.apache.seatunnel.connectors.seatunnel.console.sink.ConsoleSinkWriter - subtaskIndex=0 rowIndex=6: SeaTunnelRow#tableId=-1 SeaTunnelRow#kind=INSERT: wCoWN, 986999925
+2022-12-19 11:01:46,490 INFO org.apache.seatunnel.connectors.seatunnel.console.sink.ConsoleSinkWriter - subtaskIndex=0 rowIndex=7: SeaTunnelRow#tableId=-1 SeaTunnelRow#kind=INSERT: qomTU, 72775247
+2022-12-19 11:01:46,490 INFO org.apache.seatunnel.connectors.seatunnel.console.sink.ConsoleSinkWriter - subtaskIndex=0 rowIndex=8: SeaTunnelRow#tableId=-1 SeaTunnelRow#kind=INSERT: jcqXR, 1074529204
+2022-12-19 11:01:46,490 INFO org.apache.seatunnel.connectors.seatunnel.console.sink.ConsoleSinkWriter - subtaskIndex=0 rowIndex=9: SeaTunnelRow#tableId=-1 SeaTunnelRow#kind=INSERT: AkWIO, 1961723427
+2022-12-19 11:01:46,490 INFO org.apache.seatunnel.connectors.seatunnel.console.sink.ConsoleSinkWriter - subtaskIndex=0 rowIndex=10: SeaTunnelRow#tableId=-1 SeaTunnelRow#kind=INSERT: hBoib, 929089763
+```
+
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/sink/DingTalk.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/sink/DingTalk.md
new file mode 100644
index 000000000000..8f584fc7ad78
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/sink/DingTalk.md
@@ -0,0 +1,55 @@
+# 钉钉
+
+> 钉钉 数据接收器
+
+## 支持的引擎
+
+> Spark
+> Flink
+> SeaTunnel Zeta
+
+## 主要特性
+
+- [ ] [精确一次](../../concept/connector-v2-features.md)
+
+## 描述
+
+一个使用钉钉机器人发送消息的Sink插件。
+
+## Options
+
+| 名称 | 类型 | 是否必须 | 默认值 |
+|----------------|--------|------|-----|
+| url | String | 是 | - |
+| secret | String | 是 | - |
+| common-options | | 否 | - |
+
+### url [String]
+
+钉钉机器人地址格式为 https://oapi.dingtalk.com/robot/send?access_token=XXXXXX(String)
+
+### secret [String]
+
+钉钉机器人的密钥 (String)
+
+### common options
+
+Sink插件的通用参数,请参考 [Sink Common Options](common-options.md) 了解详情
+
+## 任务示例
+
+```hocon
+sink {
+ DingTalk {
+ url="https://oapi.dingtalk.com/robot/send?access_token=ec646cccd028d978a7156ceeac5b625ebd94f586ea0743fa501c100007890"
+ secret="SEC093249eef7aa57d4388aa635f678930c63db3d28b2829d5b2903fc1e5c10000"
+ }
+}
+```
+
+## 更新日志
+
+### 2.2.0-beta 2022-09-26
+
+- 添加钉钉接收器
+
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/sink/Doris.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/sink/Doris.md
new file mode 100644
index 000000000000..afc470326f56
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/sink/Doris.md
@@ -0,0 +1,340 @@
+# Doris
+
+> Doris sink 连接器
+
+## 支持的doris版本
+
+- exactly-once & cdc 支持 `Doris version is >= 1.1.x`
+- 支持数组数据类型 `Doris version is >= 1.2.x`
+- 将支持Map数据类型 `Doris version is 2.x`
+
+## 引擎支持
+
+> Spark
+> Flink
+> SeaTunnel Zeta
+
+## 主要特性
+
+- [x] [精确一次](../../concept/connector-v2-features.md)
+- [x] [cdc](../../concept/connector-v2-features.md)
+
+## 描述
+
+用于发送数据到doris. 同时支持流模式和批模式处理.
+Doris Sink连接器的内部实现是通过stream load批量缓存和导入的。
+
+## Sink 选项
+
+| Name | Type | Required | Default | Description |
+|--------------------------------|---------|----------|------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------|
+| fenodes | String | Yes | - | `Doris` 集群 fenodes 地址, 格式是 `"fe_ip:fe_http_port, ..."` |
+| query-port | int | No | 9030 | `Doris` Fenodes mysql协议查询端口 |
+| username | String | Yes | - | `Doris` 用户名 |
+| password | String | Yes | - | `Doris` 密码 |
+| database | String | Yes | - | `Doris`数据库名称 , 使用 `${database_name}` 表示上游数据库名称。 |
+| table | String | Yes | - | `Doris` 表名, 使用 `${table_name}` 表示上游表名。 |
+| table.identifier | String | Yes | - | `Doris` 表的名称,2.3.5 版本后将弃用,请使用 `database` 和 `table` 代替。 |
+| sink.label-prefix | String | Yes | - | stream load导入使用的标签前缀。 在2pc场景下,需要全局唯一性来保证SeaTunnel的EOS语义。 |
+| sink.enable-2pc | bool | No | false | 是否启用两阶段提交(2pc),默认为 false。 对于两阶段提交,请参考[此处](https://doris.apache.org/docs/dev/sql-manual/sql-statements/Data-Manipulation-Statements/Load/STREAM-LOAD/)。 |
+| sink.enable-delete | bool | No | - | 是否启用删除。 该选项需要Doris表开启批量删除功能(0.15+版本默认开启),且仅支持Unique模型。 您可以在此[link](https://doris.apache.org/docs/dev/data-operate/delete/batch-delete-manual/)获得更多详细信息 |
+| sink.check-interval | int | No | 10000 | 加载过程中检查异常时间间隔。 |
+| sink.max-retries | int | No | 3 | 向数据库写入记录失败时的最大重试次数。 |
+| sink.buffer-size | int | No | 256 * 1024 | 用于缓存stream load数据的缓冲区大小。 |
+| sink.buffer-count | int | No | 3 | 用于缓存stream load数据的缓冲区计数。 |
+| doris.batch.size | int | No | 1024 | 每次http请求写入doris的批量大小,当row达到该大小或者执行checkpoint时,缓存的数据就会写入服务器。 |
+| needs_unsupported_type_casting | boolean | No | false | 是否启用不支持的类型转换,例如 Decimal64 到 Double。 |
+| schema_save_mode | Enum | no | CREATE_SCHEMA_WHEN_NOT_EXIST | schema保存模式,请参考下面的`schema_save_mode` |
+| data_save_mode | Enum | no | APPEND_DATA | 数据保存模式,请参考下面的`data_save_mode`。 |
+| save_mode_create_template | string | no | see below | 见下文。 |
+| custom_sql | String | no | - | 当data_save_mode选择CUSTOM_PROCESSING时,需要填写CUSTOM_SQL参数。 该参数通常填写一条可以执行的SQL。 SQL将在同步任务之前执行。 |
+| doris.config | map | yes | - | 该选项用于支持自动生成sql时的insert、delete、update等操作,以及支持的格式。 |
+
+### schema_save_mode[Enum]
+
+在开启同步任务之前,针对现有的表结构选择不同的处理方案。
+选项介绍:
+`RECREATE_SCHEMA` :表不存在时创建,表保存时删除并重建。
+`CREATE_SCHEMA_WHEN_NOT_EXIST` :表不存在时会创建,表存在时跳过。
+`ERROR_WHEN_SCHEMA_NOT_EXIST` :表不存在时会报错。
+
+### data_save_mode[Enum]
+
+在开启同步任务之前,针对目标端已有的数据选择不同的处理方案。
+选项介绍:
+`DROP_DATA`: 保留数据库结构并删除数据。
+`APPEND_DATA`:保留数据库结构,保留数据。
+`CUSTOM_PROCESSING`:用户自定义处理。
+`ERROR_WHEN_DATA_EXISTS`:有数据时报错。
+
+### save_mode_create_template
+
+使用模板自动创建Doris表,
+会根据上游数据类型和schema类型创建相应的建表语句,
+默认模板可以根据情况进行修改。
+
+默认模板:
+
+```sql
+CREATE TABLE IF NOT EXISTS `${database}`.`${table_name}` (
+${rowtype_primary_key},
+${rowtype_fields}
+) ENGINE=OLAP
+ UNIQUE KEY (${rowtype_primary_key})
+DISTRIBUTED BY HASH (${rowtype_primary_key})
+ PROPERTIES (
+"replication_allocation" = "tag.location.default: 1",
+"in_memory" = "false",
+"storage_format" = "V2",
+"disable_auto_compaction" = "false"
+)
+```
+
+如果模板中填写了自定义字段,例如添加 id 字段
+
+```sql
+CREATE TABLE IF NOT EXISTS `${database}`.`${table_name}`
+(
+ id,
+ ${rowtype_fields}
+) ENGINE = OLAP UNIQUE KEY (${rowtype_primary_key})
+ DISTRIBUTED BY HASH (${rowtype_primary_key})
+ PROPERTIES
+(
+ "replication_num" = "1"
+);
+```
+
+连接器会自动从上游获取对应类型完成填充,
+并从“rowtype_fields”中删除 id 字段。 该方法可用于自定义字段类型和属性的修改。
+
+可以使用以下占位符:
+
+- database:用于获取上游schema中的数据库。
+- table_name:用于获取上游schema中的表名。
+- rowtype_fields:用于获取上游schema中的所有字段,自动映射到Doris的字段描述。
+- rowtype_primary_key:用于获取上游模式中的主键(可能是列表)
+- rowtype_unique_key:用于获取上游模式中的唯一键(可能是列表)。
+
+## 数据类型映射
+
+| Doris 数据类型 | SeaTunnel 数据类型 |
+|----------------|-----------------------------------------|
+| BOOLEAN | BOOLEAN |
+| TINYINT | TINYINT |
+| SMALLINT | SMALLINT
TINYINT |
+| INT | INT
SMALLINT
TINYINT |
+| BIGINT | BIGINT
INT
SMALLINT
TINYINT |
+| LARGEINT | BIGINT
INT
SMALLINT
TINYINT |
+| FLOAT | FLOAT |
+| DOUBLE | DOUBLE
FLOAT |
+| DECIMAL | DECIMAL
DOUBLE
FLOAT |
+| DATE | DATE |
+| DATETIME | TIMESTAMP |
+| CHAR | STRING |
+| VARCHAR | STRING |
+| STRING | STRING |
+| ARRAY | ARRAY |
+| MAP | MAP |
+| JSON | STRING |
+| HLL | 尚不支持 |
+| BITMAP | 尚不支持 |
+| QUANTILE_STATE | 尚不支持 |
+| STRUCT | 尚不支持 |
+
+#### 支持的导入数据格式
+
+支持的格式包括 CSV 和 JSON。
+
+## 任务示例
+
+### 简单示例:
+
+> 下面的例子描述了向Doris写入多种数据类型,用户需要在下游创建对应的表。
+
+```hocon
+env {
+ parallelism = 1
+ job.mode = "BATCH"
+ checkpoint.interval = 10000
+}
+
+source {
+ FakeSource {
+ row.num = 10
+ map.size = 10
+ array.size = 10
+ bytes.length = 10
+ string.length = 10
+ schema = {
+ fields {
+ c_map = "map>"
+ c_array = "array"
+ c_string = string
+ c_boolean = boolean
+ c_tinyint = tinyint
+ c_smallint = smallint
+ c_int = int
+ c_bigint = bigint
+ c_float = float
+ c_double = double
+ c_decimal = "decimal(16, 1)"
+ c_null = "null"
+ c_bytes = bytes
+ c_date = date
+ c_timestamp = timestamp
+ }
+ }
+ }
+}
+
+sink {
+ Doris {
+ fenodes = "doris_cdc_e2e:8030"
+ username = root
+ password = ""
+ database = "test"
+ table = "e2e_table_sink"
+ sink.label-prefix = "test-cdc"
+ sink.enable-2pc = "true"
+ sink.enable-delete = "true"
+ doris.config {
+ format = "json"
+ read_json_by_line = "true"
+ }
+ }
+}
+```
+
+### CDC(监听数据变更捕获)事件:
+
+> 本示例定义了一个SeaTunnel同步任务,通过FakeSource自动生成数据并发送给Doris Sink,FakeSource使用schema、score(int类型)模拟CDC数据,Doris需要创建一个名为test.e2e_table_sink的sink任务及其对应的表 。
+
+```hocon
+env {
+ parallelism = 1
+ job.mode = "BATCH"
+ checkpoint.interval = 10000
+}
+
+source {
+ FakeSource {
+ schema = {
+ fields {
+ pk_id = bigint
+ name = string
+ score = int
+ sex = boolean
+ number = tinyint
+ height = float
+ sight = double
+ create_time = date
+ update_time = timestamp
+ }
+ }
+ rows = [
+ {
+ kind = INSERT
+ fields = [1, "A", 100, true, 1, 170.0, 4.3, "2020-02-02", "2020-02-02T02:02:02"]
+ },
+ {
+ kind = INSERT
+ fields = [2, "B", 100, true, 1, 170.0, 4.3, "2020-02-02", "2020-02-02T02:02:02"]
+ },
+ {
+ kind = INSERT
+ fields = [3, "C", 100, true, 1, 170.0, 4.3, "2020-02-02", "2020-02-02T02:02:02"]
+ },
+ {
+ kind = UPDATE_BEFORE
+ fields = [1, "A", 100, true, 1, 170.0, 4.3, "2020-02-02", "2020-02-02T02:02:02"]
+ },
+ {
+ kind = UPDATE_AFTER
+ fields = [1, "A_1", 100, true, 1, 170.0, 4.3, "2020-02-02", "2020-02-02T02:02:02"]
+ },
+ {
+ kind = DELETE
+ fields = [2, "B", 100, true, 1, 170.0, 4.3, "2020-02-02", "2020-02-02T02:02:02"]
+ }
+ ]
+ }
+}
+
+sink {
+ Doris {
+ fenodes = "doris_cdc_e2e:8030"
+ username = root
+ password = ""
+ database = "test"
+ table = "e2e_table_sink"
+ sink.label-prefix = "test-cdc"
+ sink.enable-2pc = "true"
+ sink.enable-delete = "true"
+ doris.config {
+ format = "json"
+ read_json_by_line = "true"
+ }
+ }
+}
+
+```
+
+### 使用JSON格式导入数据
+
+```
+sink {
+ Doris {
+ fenodes = "e2e_dorisdb:8030"
+ username = root
+ password = ""
+ database = "test"
+ table = "e2e_table_sink"
+ sink.enable-2pc = "true"
+ sink.label-prefix = "test_json"
+ doris.config = {
+ format="json"
+ read_json_by_line="true"
+ }
+ }
+}
+
+```
+
+### 使用CSV格式导入数据
+
+```
+sink {
+ Doris {
+ fenodes = "e2e_dorisdb:8030"
+ username = root
+ password = ""
+ database = "test"
+ table = "e2e_table_sink"
+ sink.enable-2pc = "true"
+ sink.label-prefix = "test_csv"
+ doris.config = {
+ format = "csv"
+ column_separator = ","
+ }
+ }
+}
+```
+
+## 变更日志
+
+### 2.3.0-beta 2022-10-20
+
+- 添加 Doris sink连接器
+
+### Next version
+
+- [Improve] Change Doris Config Prefix [3856](https://github.com/apache/seatunnel/pull/3856)
+
+- [Improve] Refactor some Doris Sink code as well as support 2pc and cdc [4235](https://github.com/apache/seatunnel/pull/4235)
+
+:::tip
+
+PR 4235 is an incompatible modification to PR 3856. Please refer to PR 4235 to use the new Doris connector
+
+:::
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/sink/Elasticsearch.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/sink/Elasticsearch.md
new file mode 100644
index 000000000000..edf974d8fbad
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/sink/Elasticsearch.md
@@ -0,0 +1,218 @@
+# Elasticsearch
+
+## 描述
+
+输出数据到 `Elasticsearch`
+
+## 主要特性
+
+- [ ] [精确一次](../../concept/connector-v2-features.md)
+- [x] [cdc](../../concept/connector-v2-features.md)
+
+:::tip
+
+引擎支持
+
+* 支持 `ElasticSearch 版本 >= 2.x 并且 <= 8.x`
+
+:::
+
+## 选项
+
+| 名称 | 类型 | 是否必须 | 默认值 |
+|-------------------------|---------|------|------------------------------|
+| hosts | array | 是 | - |
+| index | string | 是 | - |
+| schema_save_mode | string | 是 | CREATE_SCHEMA_WHEN_NOT_EXIST |
+| data_save_mode | string | 是 | APPEND_DATA |
+| index_type | string | 否 | |
+| primary_keys | list | 否 | |
+| key_delimiter | string | 否 | `_` |
+| username | string | 否 | |
+| password | string | 否 | |
+| max_retry_count | int | 否 | 3 |
+| max_batch_size | int | 否 | 10 |
+| tls_verify_certificate | boolean | 否 | true |
+| tls_verify_hostnames | boolean | 否 | true |
+| tls_keystore_path | string | 否 | - |
+| tls_keystore_password | string | 否 | - |
+| tls_truststore_path | string | 否 | - |
+| tls_truststore_password | string | 否 | - |
+| common-options | | 否 | - |
+
+### hosts [array]
+
+`Elasticsearch` 集群http地址,格式为 `host:port` ,允许指定多个主机。例如 `["host1:9200", "host2:9200"]`
+
+### index [string]
+
+`Elasticsearch` 的 `index` 名称。索引支持包含字段名变量,例如 `seatunnel_${age}`,并且该字段必须出现在 seatunnel Row 中。如果没有,我们将把它视为普通索引
+
+### index_type [string]
+
+`Elasticsearch` 索引类型,elasticsearch 6及以上版本建议不要指定
+
+### primary_keys [list]
+
+主键字段用于生成文档 `_id` ,这是 CDC 必需的选项。
+
+### key_delimiter [string]
+
+设定复合键的分隔符(默认为 `_`),例如,如果使用 `$` 作为分隔符,那么文档的 `_id` 将呈现为 `KEY1$KEY2$KEY3` 的格式
+
+### username [string]
+
+x-pack 用户名
+
+### password [string]
+
+x-pack 密码
+
+### max_retry_count [int]
+
+批次批量请求最大尝试大小
+
+### max_batch_size [int]
+
+批次批量文档最大大小
+
+### tls_verify_certificate [boolean]
+
+为 HTTPS 端点启用证书验证
+
+### tls_verify_hostname [boolean]
+
+为 HTTPS 端点启用主机名验证
+
+### tls_keystore_path [string]
+
+指向 PEM 或 JKS 密钥存储的路径。运行 SeaTunnel 的操作系统用户必须能够读取此文件
+
+### tls_keystore_password [string]
+
+指定的密钥存储的密钥密码
+
+### tls_truststore_path [string]
+
+指向 PEM 或 JKS 信任存储的路径。运行 SeaTunnel 的操作系统用户必须能够读取此文件
+
+### tls_truststore_password [string]
+
+指定的信任存储的密钥密码
+
+### common options
+
+Sink插件常用参数,请参考 [Sink常用选项](common-options.md) 了解详情
+
+### schema_save_mode
+
+在启动同步任务之前,针对目标侧已有的表结构选择不同的处理方案
+选项介绍:
+`RECREATE_SCHEMA` :当表不存在时会创建,当表已存在时会删除并重建
+`CREATE_SCHEMA_WHEN_NOT_EXIST` :当表不存在时会创建,当表已存在时则跳过创建
+`ERROR_WHEN_SCHEMA_NOT_EXIST` :当表不存在时将抛出错误
+
+### data_save_mode
+
+在启动同步任务之前,针对目标侧已存在的数据选择不同的处理方案
+选项介绍:
+`DROP_DATA`: 保留数据库结构,删除数据
+`APPEND_DATA`:保留数据库结构,保留数据
+`ERROR_WHEN_DATA_EXISTS`:当有数据时抛出错误
+
+## 示例
+
+简单示例
+
+```bash
+sink {
+ Elasticsearch {
+ hosts = ["localhost:9200"]
+ index = "seatunnel-${age}"
+ }
+}
+```
+
+变更数据捕获 (Change data capture) 事件
+
+```bash
+sink {
+ Elasticsearch {
+ hosts = ["localhost:9200"]
+ index = "seatunnel-${age}"
+
+ # CDC required options
+ primary_keys = ["key1", "key2", ...]
+ }
+}
+```
+
+SSL 禁用证书验证
+
+```hocon
+sink {
+ Elasticsearch {
+ hosts = ["https://localhost:9200"]
+ username = "elastic"
+ password = "elasticsearch"
+
+ tls_verify_certificate = false
+ }
+}
+```
+
+SSL 禁用主机名验证
+
+```hocon
+sink {
+ Elasticsearch {
+ hosts = ["https://localhost:9200"]
+ username = "elastic"
+ password = "elasticsearch"
+
+ tls_verify_hostname = false
+ }
+}
+```
+
+SSL 启用证书验证
+
+通过设置 `tls_keystore_path` 与 `tls_keystore_password` 指定证书路径及密码
+
+```hocon
+sink {
+ Elasticsearch {
+ hosts = ["https://localhost:9200"]
+ username = "elastic"
+ password = "elasticsearch"
+
+ tls_keystore_path = "${your elasticsearch home}/config/certs/http.p12"
+ tls_keystore_password = "${your password}"
+ }
+}
+```
+
+配置表生成策略 (schema_save_mode)
+
+通过设置 `schema_save_mode` 配置为 `CREATE_SCHEMA_WHEN_NOT_EXIST` 来支持不存在表时创建表
+
+```hocon
+sink {
+ Elasticsearch {
+ hosts = ["https://localhost:9200"]
+ username = "elastic"
+ password = "elasticsearch"
+
+ schema_save_mode = "CREATE_SCHEMA_WHEN_NOT_EXIST"
+ data_save_mode = "APPEND_DATA"
+ }
+}
+```
+
+## 变更日志
+
+### 下一版本
+
+- [Feature] Support CDC write DELETE/UPDATE/INSERT events ([3673](https://github.com/apache/seatunnel/pull/3673))
+- [Feature] Support https protocol & compatible with opensearch ([3997](https://github.com/apache/seatunnel/pull/3997))
+
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/sink/Email.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/sink/Email.md
new file mode 100644
index 000000000000..cc3999c580c9
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/sink/Email.md
@@ -0,0 +1,89 @@
+# Email
+
+> Email 数据接收器
+
+## 描述
+
+将接收的数据作为文件发送到电子邮件
+
+## 支持版本
+
+测试版本:1.5.6(供参考)
+
+## 主要特性
+
+- [ ] [精确一次](../../concept/connector-v2-features.md)
+
+## 选项
+
+| 名称 | 类型 | 是否必须 | 默认值 |
+|--------------------------|--------|------|-----|
+| email_from_address | string | 是 | - |
+| email_to_address | string | 是 | - |
+| email_host | string | 是 | - |
+| email_transport_protocol | string | 是 | - |
+| email_smtp_auth | string | 是 | - |
+| email_authorization_code | string | 是 | - |
+| email_message_headline | string | 是 | - |
+| email_message_content | string | 是 | - |
+| common-options | | 否 | - |
+
+### email_from_address [string]
+
+发件人邮箱地址
+
+### email_to_address [string]
+
+接收邮件的地址
+
+### email_host [string]
+
+连接的SMTP服务器地址
+
+### email_transport_protocol [string]
+
+加载会话的协议
+
+### email_smtp_auth [string]
+
+是否对客户进行认证
+
+### email_authorization_code [string]
+
+授权码,您可以从邮箱设置中获取授权码
+
+### email_message_headline [string]
+
+邮件的标题
+
+### email_message_content [string]
+
+邮件消息的正文
+
+### common options
+
+Sink插件常用参数,请参考 [Sink常用选项](common-options.md) 了解详情.
+
+## 示例
+
+```bash
+
+ EmailSink {
+ email_from_address = "xxxxxx@qq.com"
+ email_to_address = "xxxxxx@163.com"
+ email_host="smtp.qq.com"
+ email_transport_protocol="smtp"
+ email_smtp_auth="true"
+ email_authorization_code=""
+ email_message_headline=""
+ email_message_content=""
+ }
+
+```
+
+## 变更日志
+
+### 2.2.0-beta 2022-09-26
+
+- 添加 Email 接收器连接器
+
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/sink/Feishu.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/sink/Feishu.md
new file mode 100644
index 000000000000..c561e50a9714
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/sink/Feishu.md
@@ -0,0 +1,66 @@
+# 飞书
+
+> 飞书 数据接收器
+
+## 支持的引擎
+
+> Spark
+> Flink
+> SeaTunnel Zeta
+
+## 主要特性
+
+- [ ] [精确一次](../../concept/connector-v2-features.md)
+- [ ] [变更数据捕获](../../concept/connector-v2-features.md)
+
+## 描述
+
+用于通过数据调用飞书的web hooks。
+
+> 例如,如果来自上游的数据是 [`年龄: 12, 姓名: tyrantlucifer`],则 body 内容如下:`{"年龄": 12, "姓名": "tyrantlucifer"}`
+
+**提示:飞书接收器仅支持 `post json`类型的web hook,并且源数据将被视为web hook的正文内容。**
+
+## 数据类型映射
+
+| SeaTunnel 数据类型 | 飞书数据类型 |
+|-----------------------------|------------|
+| ROW
MAP | Json |
+| NULL | null |
+| BOOLEAN | boolean |
+| TINYINT | byte |
+| SMALLINT | short |
+| INT | int |
+| BIGINT | long |
+| FLOAT | float |
+| DOUBLE | double |
+| DECIMAL | BigDecimal |
+| BYTES | byte[] |
+| STRING | String |
+| TIME
TIMESTAMP
TIME | String |
+| ARRAY | JsonArray |
+
+## 接收器选项
+
+| 名称 | 类型 | 是否必需 | 默认值 | 描述 |
+|----------------|--------|------|-----|----------------------------------------------------|
+| url | String | 是 | - | 飞书web hook URL |
+| headers | Map | 否 | - | HTTP 请求头 |
+| common-options | | 否 | - | 接收器插件常见参数,请参阅 [接收器通用选项](common-options.md) 以获取详细信息 |
+
+## 任务示例
+
+### 简单示例:
+
+```hocon
+Feishu {
+ url = "https://www.feishu.cn/flow/api/trigger-webhook/108bb8f208d9b2378c8c7aedad715c19"
+ }
+```
+
+## 更新日志
+
+### 2.2.0-beta 2022-09-26
+
+- 添加飞书接收器
+
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/sink/Hbase.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/sink/Hbase.md
new file mode 100644
index 000000000000..871cad206c64
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/sink/Hbase.md
@@ -0,0 +1,141 @@
+# Hbase
+
+> Hbase 数据连接器
+
+## 描述
+
+将数据输出到hbase
+
+## 主要特性
+
+- [ ] [精准一次](../../concept/connector-v2-features.md)
+
+## 选项
+
+| 名称 | 类型 | 是否必须 | 默认值 |
+|--------------------|---------|------|-----------------|
+| zookeeper_quorum | string | yes | - |
+| table | string | yes | - |
+| rowkey_column | list | yes | - |
+| family_name | config | yes | - |
+| rowkey_delimiter | string | no | "" |
+| version_column | string | no | - |
+| null_mode | string | no | skip |
+| wal_write | boolean | yes | false |
+| write_buffer_size | string | no | 8 * 1024 * 1024 |
+| encoding | string | no | utf8 |
+| hbase_extra_config | string | no | - |
+| common-options | | no | - |
+| ttl | long | no | - |
+
+### zookeeper_quorum [string]
+
+hbase的zookeeper集群主机, 示例: "hadoop001:2181,hadoop002:2181,hadoop003:2181"
+
+### table [string]
+
+要写入的表名, 例如: "seatunnel"
+
+### rowkey_column [list]
+
+行键的列名列表, 例如: ["id", "uuid"]
+
+### family_name [config]
+
+字段的列簇名称映射。例如,上游的行如下所示:
+
+| id | name | age |
+|----|---------------|-----|
+| 1 | tyrantlucifer | 27 |
+
+id作为行键和其他写入不同列簇的字段,可以分配
+
+family_name {
+name = "info1"
+age = "info2"
+}
+
+这主要是name写入列簇info1,age写入将写给列簇 info2
+
+如果要将其他字段写入同一列簇,可以分配
+
+family_name {
+all_columns = "info"
+}
+
+这意味着所有字段都将写入该列簇 info
+
+### rowkey_delimiter [string]
+
+连接多行键的分隔符,默认 ""
+
+### version_column [string]
+
+版本列名称,您可以使用它来分配 hbase 记录的时间戳
+
+### null_mode [double]
+
+写入 null 值的模式,支持 [ skip , empty], 默认 skip
+
+- skip: 当字段为 null ,连接器不会将此字段写入 hbase
+- empty: 当字段为null时,连接器将写入并为此字段生成空值
+
+### wal_write [boolean]
+
+wal log 写入标志,默认值 false
+
+### write_buffer_size [int]
+
+hbase 客户端的写入缓冲区大小,默认 8 * 1024 * 1024
+
+### encoding [string]
+
+字符串字段的编码,支持[ utf8 , gbk],默认 utf8
+
+### hbase_extra_config [config]
+
+hbase扩展配置
+
+### ttl [long]
+
+hbase 写入数据 TTL 时间,默认以表设置的TTL为准,单位毫秒
+
+### 常见选项
+
+Sink 插件常用参数,详见 Sink 常用选项 [Sink Common Options](common-options.md)
+
+## 案例
+
+```hocon
+
+Hbase {
+ zookeeper_quorum = "hadoop001:2181,hadoop002:2181,hadoop003:2181"
+ table = "seatunnel_test"
+ rowkey_column = ["name"]
+ family_name {
+ all_columns = seatunnel
+ }
+}
+
+```
+
+## 写入指定列族
+
+```hocon
+Hbase {
+ zookeeper_quorum = "hbase_e2e:2181"
+ table = "assign_cf_table"
+ rowkey_column = ["id"]
+ family_name {
+ c_double = "cf1"
+ c_bigint = "cf2"
+ }
+}
+```
+
+## 更改日志
+
+### 下一个版本
+
+- 添加 hbase 输出连接器 ([4049](https://github.com/apache/seatunnel/pull/4049))
+
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/sink/HdfsFile.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/sink/HdfsFile.md
new file mode 100644
index 000000000000..dee466770e60
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/sink/HdfsFile.md
@@ -0,0 +1,202 @@
+# Hdfs文件
+
+> Hdfs文件 数据接收器
+
+## 支持的引擎
+
+> Spark
+> Flink
+> SeaTunnel Zeta
+
+## 主要特性
+
+- [x] [精确一次](../../../en/concept/connector-v2-features.md)
+
+默认情况下,我们使用2PC提交来确保"精确一次"
+
+- [x] 文件格式类型
+ - [x] 文本
+ - [x] CSV
+ - [x] Parquet
+ - [x] ORC
+ - [x] JSON
+ - [x] Excel
+- [x] 压缩编解码器
+ - [x] lzo
+
+## 描述
+
+将数据输出到Hdfs文件
+
+## 支持的数据源信息
+
+| 数据源 | 支持的版本 |
+|--------|------------------|
+| Hdfs文件 | hadoop 2.x 和 3.x |
+
+## 接收器选项
+
+| 名称 | 类型 | 是否必须 | 默认值 | 描述 |
+|----------------------------------|---------|------|--------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| fs.defaultFS | string | 是 | - | 以 `hdfs://` 开头的 Hadoop 集群地址,例如:`hdfs://hadoopcluster` |
+| path | string | 是 | - | 目标目录路径是必需的。 |
+| tmp_path | string | 是 | /tmp/seatunnel | 结果文件将首先写入临时路径,然后使用 `mv` 命令将临时目录提交到目标目录。需要一个Hdfs路径。 |
+| hdfs_site_path | string | 否 | - | `hdfs-site.xml` 的路径,用于加载 namenodes 的 ha 配置。 |
+| custom_filename | boolean | 否 | false | 是否需要自定义文件名 |
+| file_name_expression | string | 否 | "${transactionId}" | 仅在 `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 | 否 | "yyyy.MM.dd" | 仅在 `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 | 否 | "csv" | 我们支持以下文件类型:`text` `json` `csv` `orc` `parquet` `excel`。请注意,最终文件名将以文件格式的后缀结束,文本文件的后缀是 `txt`。 |
+| field_delimiter | string | 否 | '\001' | 仅在 file_format 为 text 时使用,数据行中列之间的分隔符。仅需要 `text` 文件格式。 |
+| row_delimiter | string | 否 | "\n" | 仅在 file_format 为 text 时使用,文件中行之间的分隔符。仅需要 `text` 文件格式。 |
+| have_partition | boolean | 否 | false | 是否需要处理分区。 |
+| partition_by | array | 否 | - | 仅在 have_partition 为 true 时使用,根据选定的字段对数据进行分区。 |
+| partition_dir_expression | string | 否 | "${k0}=${v0}/${k1}=${v1}/.../${kn}=${vn}/" | 仅在 have_partition 为 true 时使用,如果指定了 `partition_by`,我们将根据分区信息生成相应的分区目录,并将最终文件放置在分区目录中。默认 `partition_dir_expression` 为 `${k0}=${v0}/${k1}=${v1}/.../${kn}=${vn}/`。`k0` 是第一个分区字段,`v0` 是第一个分区字段的值。 |
+| is_partition_field_write_in_file | boolean | 否 | false | 仅当 `have_partition` 为 `true` 时使用。如果 `is_partition_field_write_in_file` 为 `true`,则分区字段及其值将写入数据文件中。例如,如果要写入Hive数据文件,则其值应为 `false`。 |
+| sink_columns | array | 否 | | 当此参数为空时,所有字段都是接收器列。需要写入文件的列,默认值是从 `Transform` 或 `Source` 获取的所有列。字段的顺序确定了实际写入文件时的顺序。 |
+| is_enable_transaction | boolean | 否 | true | 如果 `is_enable_transaction` 为 true,则在将数据写入目标目录时,我们将确保数据不会丢失或重复。请注意,如果 `is_enable_transaction` 为 `true`,我们将在文件头部自动添加 `${transactionId}_`。目前仅支持 `true`。 |
+| batch_size | int | 否 | 1000000 | 文件中的最大行数。对于 SeaTunnel Engine,文件中的行数由 `batch_size` 和 `checkpoint.interval` 共同决定。如果 `checkpoint.interval` 的值足够大,则接收器写入器将在文件中写入行,直到文件中的行大于 `batch_size`。如果 `checkpoint.interval` 很小,则接收器写入器将在新检查点触发时创建一个新文件。 |
+| compress_codec | string | 否 | none | 文件的压缩编解码器及其支持的细节如下所示:[txt: `lzo` `none`,json: `lzo` `none`,csv: `lzo` `none`,orc: `lzo` `snappy` `lz4` `zlib` `none`,parquet: `lzo` `snappy` `lz4` `gzip` `brotli` `zstd` `none`]。提示:excel类型不支持任何压缩格式。 |
+| krb5_path | string | 否 | /etc/krb5.conf | kerberos 的 krb5 路径 |
+| kerberos_principal | string | 否 | - | kerberos 的主体 |
+| kerberos_keytab_path | string | 否 | - | kerberos 的 keytab 路径 |
+| compress_codec | string | 否 | none | 压缩编解码器 |
+| common-options | object | 否 | - | 接收器插件通用参数,请参阅 [接收器通用选项](common-options.md) 了解详情 |
+| max_rows_in_memory | int | 否 | - | 仅当 file_format 为 excel 时使用。当文件格式为 Excel 时,可以缓存在内存中的最大数据项数。 |
+| sheet_name | string | 否 | Sheet${Random number} | 仅当 file_format 为 excel 时使用。将工作簿的表写入指定的表名 |
+
+### 提示
+
+> 如果您使用 spark/flink,为了使用此连接器,您必须确保您的 spark/flink 集群已经集成了 hadoop。测试过的 hadoop 版本是
+> 2.x。如果您使用 SeaTunnel Engine,则在下载和安装 SeaTunnel Engine 时会自动集成 hadoop
+> jar。您可以检查 `${SEATUNNEL_HOME}/lib` 下的 jar 包来确认这一点。
+
+## 任务示例
+
+### 简单示例:
+
+> 此示例定义了一个 SeaTunnel 同步任务,通过 FakeSource 自动生成数据并将其发送到 Hdfs。
+
+```
+# 定义运行时环境
+env {
+ parallelism = 1
+ job.mode = "BATCH"
+}
+
+source {
+ # 这是一个示例源插件 **仅用于测试和演示功能源插件**
+ FakeSource {
+ parallelism = 1
+ result_table_name = "fake"
+ row.num = 16
+ schema = {
+ fields {
+ c_map = "map"
+ c_array = "array"
+ c_string = string
+ c_boolean = boolean
+ c_tinyint = tinyint
+ c_smallint = smallint
+ c_int = int
+ c_bigint = bigint
+ c_float = float
+ c_double = double
+ c_decimal = "decimal(30, 8)"
+ c_bytes = bytes
+ c_date = date
+ c_timestamp = timestamp
+ }
+ }
+ }
+ # 如果您想获取有关如何配置 seatunnel 的更多信息和查看完整的源端插件列表,
+ # 请访问 https://seatunnel.apache.org/docs/category/source-v2
+}
+
+transform {
+ # 如果您想获取有关如何配置 seatunnel 的更多信息和查看完整的转换插件列表,
+ # 请访问 https://seatunnel.apache.org/docs/category/transform-v2
+}
+
+sink {
+ HdfsFile {
+ fs.defaultFS = "hdfs://hadoopcluster"
+ path = "/tmp/hive/warehouse/test2"
+ file_format_type = "orc"
+ }
+ # 如果您想获取有关如何配置 seatunnel 的更多信息和查看完整的接收器插件列表,
+ # 请访问 https://seatunnel.apache.org/docs/category/sink-v2
+}
+```
+
+### orc 文件格式的简单配置
+
+```
+HdfsFile {
+ fs.defaultFS = "hdfs://hadoopcluster"
+ path = "/tmp/hive/warehouse/test2"
+ file_format_type = "orc"
+}
+```
+
+### text 文件格式的配置,包括 `have_partition`、`custom_filename` 和 `sink_columns`
+
+```
+HdfsFile {
+ fs.defaultFS = "hdfs://hadoopcluster"
+ 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
+}
+```
+
+### parquet 文件格式的配置,包括 `have_partition`、`custom_filename` 和 `sink_columns`
+
+```
+HdfsFile {
+ fs.defaultFS = "hdfs://hadoopcluster"
+ path = "/tmp/hive/warehouse/test2"
+ 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"
+ file_format_type = "parquet"
+ sink_columns = ["name","age"]
+ is_enable_transaction = true
+}
+```
+
+### kerberos 的简单配置
+
+```
+HdfsFile {
+ fs.defaultFS = "hdfs://hadoopcluster"
+ path = "/tmp/hive/warehouse/test2"
+ hdfs_site_path = "/path/to/your/hdfs_site_path"
+ kerberos_principal = "your_principal@EXAMPLE.COM"
+ kerberos_keytab_path = "/path/to/your/keytab/file.keytab"
+}
+```
+
+### 压缩的简单配置
+
+```
+HdfsFile {
+ fs.defaultFS = "hdfs://hadoopcluster"
+ path = "/tmp/hive/warehouse/test2"
+ compress_codec = "lzo"
+}
+```
+
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/sink/Http.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/sink/Http.md
new file mode 100644
index 000000000000..f837380efdd7
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/sink/Http.md
@@ -0,0 +1,63 @@
+# Http
+
+> Http 数据接收器
+
+## 支持引擎
+
+> Spark
+> Flink
+> SeaTunnel Zeta
+
+## 主要特性
+
+- [ ] [精确一次](../../concept/connector-v2-features.md)
+- [ ] [cdc](../../concept/connector-v2-features.md)
+
+## 描述
+
+接收Source端传入的数据,利用数据触发 web hooks。
+
+> 例如,来自上游的数据为[`age: 12, name: tyrantlucifer`],则body内容如下:`{"age": 12, "name": "tyrantlucifer"}`
+
+**Tips: Http 接收器仅支持 `post json` 类型的 web hook,source 数据将被视为 webhook 中的 body 内容。**
+
+## 支持的数据源信息
+
+想使用 Http 连接器,需要安装以下必要的依赖。可以通过运行 install-plugin.sh 脚本或者从 Maven 中央仓库下载这些依赖
+
+| 数据源 | 支持版本 | 依赖 |
+|------|------|------------------------------------------------------------------------------------------------------|
+| Http | 通用 | [下载](https://mvnrepository.com/artifact/org.apache.seatunnel/seatunnel-connectors-v2/connector-http) |
+
+## 接收器选项
+
+| 名称 | 类型 | 是否必须 | 默认值 | 描述 |
+|-----------------------------|--------|------|-------|----------------------------------------------------|
+| url | String | 是 | - | Http 请求链接 |
+| headers | Map | 否 | - | Http 标头 |
+| retry | Int | 否 | - | 如果请求http返回`IOException`的最大重试次数 |
+| retry_backoff_multiplier_ms | Int | 否 | 100 | http请求失败,重试回退次数(毫秒)乘数 |
+| retry_backoff_max_ms | Int | 否 | 10000 | http请求失败,最大重试回退时间(毫秒) |
+| connect_timeout_ms | Int | 否 | 12000 | 连接超时设置,默认12s |
+| socket_timeout_ms | Int | 否 | 60000 | 套接字超时设置,默认为60s |
+| common-options | | 否 | - | Sink插件常用参数,请参考 [Sink常用选项 ](common-options.md) 了解详情 |
+
+## 示例
+
+简单示例:
+
+```hocon
+Http {
+ url = "http://localhost/test/webhook"
+ headers {
+ token = "9e32e859ef044462a257e1fc76730066"
+ }
+}
+```
+
+## 变更日志
+
+### 2.2.0-beta 2022-09-26
+
+- 添加Http接收连接器
+
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/sink/Hudi.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/sink/Hudi.md
new file mode 100644
index 000000000000..ab1fc43603fd
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/sink/Hudi.md
@@ -0,0 +1,92 @@
+# Hudi
+
+> Hudi 接收器连接器
+
+## 描述
+
+用于将数据写入 Hudi。
+
+## 主要特点
+
+- [x] [exactly-once](../../concept/connector-v2-features.md)
+- [x] [cdc](../../concept/connector-v2-features.md)
+
+## 选项
+
+| 名称 | 类型 | 是否必需 | 默认值 |
+|----------------------------|--------|------|---------------|
+| table_name | string | 是 | - |
+| table_dfs_path | string | 是 | - |
+| conf_files_path | string | 否 | - |
+| record_key_fields | string | 否 | - |
+| partition_fields | string | 否 | - |
+| table_type | enum | 否 | copy_on_write |
+| op_type | enum | 否 | insert |
+| batch_interval_ms | Int | 否 | 1000 |
+| insert_shuffle_parallelism | Int | 否 | 2 |
+| upsert_shuffle_parallelism | Int | 否 | 2 |
+| min_commits_to_keep | Int | 否 | 20 |
+| max_commits_to_keep | Int | 否 | 30 |
+| common-options | config | 否 | - |
+
+### table_name [string]
+
+`table_name` Hudi 表的名称。
+
+### table_dfs_path [string]
+
+`table_dfs_path` Hudi 表的 DFS 根路径,例如 "hdfs://nameservice/data/hudi/hudi_table/"。
+
+### table_type [enum]
+
+`table_type` Hudi 表的类型。
+
+### conf_files_path [string]
+
+`conf_files_path` 环境配置文件路径列表(本地路径),用于初始化 HDFS 客户端以读取 Hudi 表文件。示例:"/home/test/hdfs-site.xml;/home/test/core-site.xml;/home/test/yarn-site.xml"。
+
+### op_type [enum]
+
+`op_type` Hudi 表的操作类型。值可以是 'insert'、'upsert' 或 'bulk_insert'。
+
+### batch_interval_ms [Int]
+
+`batch_interval_ms` 批量写入 Hudi 表的时间间隔。
+
+### insert_shuffle_parallelism [Int]
+
+`insert_shuffle_parallelism` 插入数据到 Hudi 表的并行度。
+
+### upsert_shuffle_parallelism [Int]
+
+`upsert_shuffle_parallelism` 更新插入数据到 Hudi 表的并行度。
+
+### min_commits_to_keep [Int]
+
+`min_commits_to_keep` Hudi 表保留的最少提交数。
+
+### max_commits_to_keep [Int]
+
+`max_commits_to_keep` Hudi 表保留的最多提交数。
+
+### 通用选项
+
+数据源插件的通用参数,请参考 [Source Common Options](common-options.md) 了解详细信息。
+
+## 示例
+
+```hocon
+source {
+
+ Hudi {
+ table_dfs_path = "hdfs://nameserivce/data/hudi/hudi_table/"
+ table_type = "cow"
+ conf_files_path = "/home/test/hdfs-site.xml;/home/test/core-site.xml;/home/test/yarn-site.xml"
+ use.kerberos = true
+ kerberos.principal = "test_user@xxx"
+ kerberos.principal.file = "/home/test/test_user.keytab"
+ }
+
+}
+```
+
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/sink/Jdbc.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/sink/Jdbc.md
new file mode 100644
index 000000000000..d61292cb921a
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/sink/Jdbc.md
@@ -0,0 +1,357 @@
+# JDBC
+
+> JDBC 数据接收器
+
+## 描述
+
+通过jdbc写入数据。支持批处理模式和流处理模式,支持并发写入,支持精确一次语义(使用XA事务保证)
+
+## 使用依赖
+
+### 用于Spark/Flink引擎
+
+> 1. 需要确保jdbc驱动jar包已经放在目录`${SEATUNNEL_HOME}/plugins/`下。
+
+### 适用于 SeaTunnel Zeta 引擎
+
+> 1. 需要确保jdbc驱动jar包已经放到`${SEATUNNEL_HOME}/lib/`目录下。
+
+## 主要特性
+
+- [x] [精确一次](../../concept/connector-v2-features.md)
+
+使用 `Xa transactions` 来确保 `exactly-once`。所以仅对于支持 `Xa transactions` 的数据库支持 `exactly-once`
+。你可以设置 `is_exactly_once=true` 来启用它。
+
+- [x] [cdc](../../concept/connector-v2-features.md)
+
+## Options
+
+| 名称 | 类型 | 是否必须 | 默认值 |
+|-------------------------------------------|---------|------|------------------------------|
+| url | String | 是 | - |
+| driver | String | 是 | - |
+| user | String | 否 | - |
+| password | String | 否 | - |
+| query | String | 否 | - |
+| compatible_mode | String | 否 | - |
+| database | String | 否 | - |
+| table | String | 否 | - |
+| primary_keys | Array | 否 | - |
+| support_upsert_by_query_primary_key_exist | Boolean | 否 | false |
+| connection_check_timeout_sec | Int | 否 | 30 |
+| max_retries | Int | 否 | 0 |
+| batch_size | Int | 否 | 1000 |
+| is_exactly_once | Boolean | 否 | false |
+| generate_sink_sql | Boolean | 否 | false |
+| xa_data_source_class_name | String | 否 | - |
+| max_commit_attempts | Int | 否 | 3 |
+| transaction_timeout_sec | Int | 否 | -1 |
+| auto_commit | Boolean | 否 | true |
+| field_ide | String | 否 | - |
+| properties | Map | 否 | - |
+| common-options | | 否 | - |
+| schema_save_mode | Enum | 否 | CREATE_SCHEMA_WHEN_NOT_EXIST |
+| data_save_mode | Enum | 否 | APPEND_DATA |
+| custom_sql | String | 否 | - |
+| enable_upsert | Boolean | 否 | true |
+| use_copy_statement | Boolean | 否 | false |
+
+### driver [string]
+
+用于连接远程数据源的 jdbc 类名,如果使用MySQL,则值为`com.mysql.cj.jdbc.Driver`
+
+### user [string]
+
+用户名
+
+### password [string]
+
+密码
+
+### url [string]
+
+JDBC 连接的 URL。参考案例:`jdbc:postgresql://localhost/test`
+
+### query [string]
+
+使用 sql 语句将上游输入数据写入到数据库。如 `INSERT ...`
+
+### compatible_mode [string]
+
+数据库的兼容模式,当数据库支持多种兼容模式时需要。例如,使用 OceanBase 数据库时,需要将其设置为 'mysql' 或 'oracle' 。
+
+Postgres 9.5及以下版本,请设置为 `postgresLow` 来支持 CDC
+
+### database [string]
+
+使用此 `database` 和 `table-name` 自动生成 SQL,并接收上游输入的数据写入数据库。
+
+此选项与 `query` 选项是互斥的,此选项具有更高的优先级。
+
+### table [string]
+
+使用 `database` 和此 `table-name` 自动生成 SQL,并接收上游输入的数据写入数据库。
+
+此选项与 `query` 选项是互斥的,此选项具有更高的优先级。
+
+table参数可以填入一个任意的表名,这个名字最终会被用作创建表的表名,并且支持变量(`${table_name}`,`${schema_name}`)。
+替换规则如下:`${schema_name}` 将替换传递给目标端的 SCHEMA 名称,`${table_name}` 将替换传递给目标端的表名。
+
+mysql 接收器示例:
+
+1. test_${schema_name}_${table_name}_test
+2. sink_sinktable
+3. ss_${table_name}
+
+pgsql (Oracle Sqlserver ...) 接收器示例:
+
+1. ${schema_name}.${table_name}_test
+2. dbo.tt_${table_name}_sink
+3. public.sink_table
+
+Tip: 如果目标数据库有 SCHEMA 的概念,则表参数必须写成 `xxx.xxx`
+
+### primary_keys [array]
+
+该选项用于辅助生成 insert、delete、update 等 sql 语句。设置了该选项,将会根据该选项生成对应的 sql 语句
+
+### support_upsert_by_query_primary_key_exist [boolean]
+
+根据查询主键是否存在来选择使用 INSERT sql、UPDATE sql 来处理变更事件(INSERT、UPDATE_AFTER)。仅当数据库不支持 upsert 语法时才使用此配置
+**注意**:该方法性能较低
+
+### connection_check_timeout_sec [int]
+
+用于验证数据库连接的有效性时等待数据库操作完成所需的时间,单位是秒
+
+### max_retries[int]
+
+重试提交失败的最大次数(executeBatch)
+
+### batch_size[int]
+
+对于批量写入,当缓冲的记录数达到 `batch_size` 数量或者时间达到 `checkpoint.interval` 时,数据将被刷新到数据库中
+
+### is_exactly_once[boolean]
+
+是否启用通过XA事务实现的精确一次语义。开启,你还需要设置 `xa_data_source_class_name`
+
+### generate_sink_sql[boolean]
+
+根据要写入的数据库表结构生成 sql 语句
+
+### xa_data_source_class_name[string]
+
+指数据库驱动的 XA 数据源的类名。以 MySQL 为例,其类名为 com.mysql.cj.jdbc.MysqlXADataSource。了解其他数据库的数据源类名,可以参考文档的附录部分
+
+### max_commit_attempts[int]
+
+事务提交失败的最大重试次数
+
+### transaction_timeout_sec[int]
+
+在事务开启后的超时时间,默认值为-1(即永不超时)。请注意,设置超时时间可能会影响到精确一次(exactly-once)的语义
+
+### auto_commit [boolean]
+
+默认启用自动事务提交
+
+### field_ide [String]
+
+字段 `field_ide` 用于在从 source 同步到 sink 时,确定字段是否需要转换为大写或小写。'ORIGINAL' 表示不需要转换,'UPPERCASE' 表示转换为大写,'LOWERCASE' 表示转换为小写
+
+### properties
+
+附加连接配置参数,当属性和URL具有相同参数时,优先级由驱动程序的具体实现确定。例如,在 MySQL 中,属性配置优先于 URL。
+
+### common options
+
+Sink插件常用参数,请参考 [Sink常用选项](common-options.md) 了解详情
+
+### schema_save_mode [Enum]
+
+在启动同步任务之前,针对目标侧已有的表结构选择不同的处理方案
+选项介绍:
+`RECREATE_SCHEMA`:当表不存在时会创建,当表已存在时会删除并重建
+`CREATE_SCHEMA_WHEN_NOT_EXIST`:当表不存在时会创建,当表已存在时则跳过创建
+`ERROR_WHEN_SCHEMA_NOT_EXIST`:当表不存在时将抛出错误
+
+### data_save_mode [Enum]
+
+在启动同步任务之前,针对目标侧已存在的数据选择不同的处理方案
+选项介绍:
+`DROP_DATA`:保留数据库结构,删除数据
+`APPEND_DATA`:保留数据库结构,保留数据
+`CUSTOM_PROCESSING`:允许用户自定义数据处理方式
+`ERROR_WHEN_DATA_EXISTS`:当有数据时抛出错误
+
+### custom_sql [String]
+
+当`data_save_mode`选择`CUSTOM_PROCESSING`时,需要填写`CUSTOM_SQL`参数。该参数通常填写一条可以执行的SQL。SQL将在同步任务之前执行
+
+### enable_upsert [boolean]
+
+启用通过主键更新插入,如果任务没有key重复数据,设置该参数为 false 可以加快数据导入速度
+
+### use_copy_statement [boolean]
+
+使用 `COPY ${table} FROM STDIN` 语句导入数据。仅支持具有 `getCopyAPI()` 方法连接的驱动程序。例如:Postgresql
+驱动程序 `org.postgresql.Driver`
+
+注意:不支持 `MAP`、`ARRAY`、`ROW`类型
+
+## tips
+
+在 is_exactly_once = "true" 的情况下,使用 XA 事务。这需要数据库支持,有些数据库需要一些设置:
+1 postgres 需要设置 `max_prepared_transactions > 1` 例如 `ALTER SYSTEM set max_prepared_transactions to 10`
+2 mysql 版本需要 >= `8.0.29` 并且非 root 用户需要授予 `XA_RECOVER_ADMIN` 权限。例如:将 test_db.* 上的 XA_RECOVER_ADMIN
+授予 `'user1'@'%'`
+3 mysql可以尝试在url中添加 `rewriteBatchedStatements=true` 参数以获得更好的性能
+
+## 附录
+
+附录参数仅提供参考
+
+| 数据源 | driver | url | xa_data_source_class_name | maven |
+|------------|----------------------------------------------|--------------------------------------------------------------------|----------------------------------------------------|-------------------------------------------------------------------------------------------------------------|
+| MySQL | com.mysql.cj.jdbc.Driver | jdbc:mysql://localhost:3306/test | com.mysql.cj.jdbc.MysqlXADataSource | https://mvnrepository.com/artifact/mysql/mysql-connector-java |
+| PostgreSQL | org.postgresql.Driver | jdbc:postgresql://localhost:5432/postgres | org.postgresql.xa.PGXADataSource | https://mvnrepository.com/artifact/org.postgresql/postgresql |
+| DM | dm.jdbc.driver.DmDriver | jdbc:dm://localhost:5236 | dm.jdbc.driver.DmdbXADataSource | https://mvnrepository.com/artifact/com.dameng/DmJdbcDriver18 |
+| Phoenix | org.apache.phoenix.queryserver.client.Driver | jdbc:phoenix:thin:url=http://localhost:8765;serialization=PROTOBUF | / | https://mvnrepository.com/artifact/com.aliyun.phoenix/ali-phoenix-shaded-thin-client |
+| SQL Server | com.microsoft.sqlserver.jdbc.SQLServerDriver | jdbc:sqlserver://localhost:1433 | com.microsoft.sqlserver.jdbc.SQLServerXADataSource | https://mvnrepository.com/artifact/com.microsoft.sqlserver/mssql-jdbc |
+| Oracle | oracle.jdbc.OracleDriver | jdbc:oracle:thin:@localhost:1521/xepdb1 | oracle.jdbc.xa.OracleXADataSource | https://mvnrepository.com/artifact/com.oracle.database.jdbc/ojdbc8 |
+| sqlite | org.sqlite.JDBC | jdbc:sqlite:test.db | / | https://mvnrepository.com/artifact/org.xerial/sqlite-jdbc |
+| GBase8a | com.gbase.jdbc.Driver | jdbc:gbase://e2e_gbase8aDb:5258/test | / | https://www.gbase8.cn/wp-content/uploads/2020/10/gbase-connector-java-8.3.81.53-build55.5.7-bin_min_mix.jar |
+| StarRocks | com.mysql.cj.jdbc.Driver | jdbc:mysql://localhost:3306/test | / | https://mvnrepository.com/artifact/mysql/mysql-connector-java |
+| db2 | com.ibm.db2.jcc.DB2Driver | jdbc:db2://localhost:50000/testdb | com.ibm.db2.jcc.DB2XADataSource | https://mvnrepository.com/artifact/com.ibm.db2.jcc/db2jcc/db2jcc4 |
+| saphana | com.sap.db.jdbc.Driver | jdbc:sap://localhost:39015 | / | https://mvnrepository.com/artifact/com.sap.cloud.db.jdbc/ngdbc |
+| Doris | com.mysql.cj.jdbc.Driver | jdbc:mysql://localhost:3306/test | / | https://mvnrepository.com/artifact/mysql/mysql-connector-java |
+| teradata | com.teradata.jdbc.TeraDriver | jdbc:teradata://localhost/DBS_PORT=1025,DATABASE=test | / | https://mvnrepository.com/artifact/com.teradata.jdbc/terajdbc |
+| Redshift | com.amazon.redshift.jdbc42.Driver | jdbc:redshift://localhost:5439/testdb | com.amazon.redshift.xa.RedshiftXADataSource | https://mvnrepository.com/artifact/com.amazon.redshift/redshift-jdbc42 |
+| Snowflake | net.snowflake.client.jdbc.SnowflakeDriver | jdbc:snowflake://.snowflakecomputing.com | / | https://mvnrepository.com/artifact/net.snowflake/snowflake-jdbc |
+| Vertica | com.vertica.jdbc.Driver | jdbc:vertica://localhost:5433 | / | https://repo1.maven.org/maven2/com/vertica/jdbc/vertica-jdbc/12.0.3-0/vertica-jdbc-12.0.3-0.jar |
+| Kingbase | com.kingbase8.Driver | jdbc:kingbase8://localhost:54321/db_test | / | https://repo1.maven.org/maven2/cn/com/kingbase/kingbase8/8.6.0/kingbase8-8.6.0.jar |
+| OceanBase | com.oceanbase.jdbc.Driver | jdbc:oceanbase://localhost:2881 | / | https://repo1.maven.org/maven2/com/oceanbase/oceanbase-client/2.4.3/oceanbase-client-2.4.3.jar |
+
+## 示例
+
+简单示例
+
+```
+jdbc {
+ url = "jdbc:mysql://localhost:3306/test"
+ driver = "com.mysql.cj.jdbc.Driver"
+ user = "root"
+ password = "123456"
+ query = "insert into test_table(name,age) values(?,?)"
+}
+
+```
+
+精确一次 (Exactly-once)
+
+通过设置 `is_exactly_once` 开启精确一次语义
+
+```
+jdbc {
+
+ url = "jdbc:mysql://localhost:3306/test"
+ driver = "com.mysql.cj.jdbc.Driver"
+
+ max_retries = 0
+ user = "root"
+ password = "123456"
+ query = "insert into test_table(name,age) values(?,?)"
+
+ is_exactly_once = "true"
+
+ xa_data_source_class_name = "com.mysql.cj.jdbc.MysqlXADataSource"
+}
+```
+
+变更数据捕获 (Change data capture) 事件
+
+jdbc 接收 CDC 示例
+
+```
+sink {
+ jdbc {
+ url = "jdbc:mysql://localhost:3306"
+ driver = "com.mysql.cj.jdbc.Driver"
+ user = "root"
+ password = "123456"
+
+ database = "sink_database"
+ table = "sink_table"
+ primary_keys = ["key1", "key2", ...]
+ }
+}
+```
+
+配置表生成策略 (schema_save_mode)
+
+通过设置 `schema_save_mode` 配置为 `CREATE_SCHEMA_WHEN_NOT_EXIST` 来支持不存在表时创建表
+
+```
+sink {
+ jdbc {
+ url = "jdbc:mysql://localhost:3306"
+ driver = "com.mysql.cj.jdbc.Driver"
+ user = "root"
+ password = "123456"
+
+ database = "sink_database"
+ table = "sink_table"
+ primary_keys = ["key1", "key2", ...]
+ schema_save_mode = "CREATE_SCHEMA_WHEN_NOT_EXIST"
+ data_save_mode="APPEND_DATA"
+ }
+}
+```
+
+支持Postgres 9.5及以下版本的 CDC 示例
+
+Postgres 9.5及以下版本,通过设置 `compatible_mode` 配置为 `postgresLow` 来支持 Postgres CDC 操作
+
+```
+sink {
+ jdbc {
+ url = "jdbc:postgresql://localhost:5432"
+ driver = "org.postgresql.Driver"
+ user = "root"
+ password = "123456"
+ compatible_mode="postgresLow"
+ database = "sink_database"
+ table = "sink_table"
+ support_upsert_by_query_primary_key_exist = true
+ generate_sink_sql = true
+ primary_keys = ["key1", "key2", ...]
+ }
+}
+
+```
+
+## 变更日志
+
+### 2.3.0-beta 2022-10-20
+
+- [BugFix] Fix JDBC split exception ([2904](https://github.com/apache/seatunnel/pull/2904))
+- [Feature] Support Phoenix JDBC Sink ([2499](https://github.com/apache/seatunnel/pull/2499))
+- [Feature] Support SQL Server JDBC Sink ([2646](https://github.com/apache/seatunnel/pull/2646))
+- [Feature] Support Oracle JDBC Sink ([2550](https://github.com/apache/seatunnel/pull/2550))
+- [Feature] Support StarRocks JDBC Sink ([3060](https://github.com/apache/seatunnel/pull/3060))
+- [Feature] Support DB2 JDBC Sink ([2410](https://github.com/apache/seatunnel/pull/2410))
+
+### next version
+
+- [Feature] Support CDC write DELETE/UPDATE/INSERT events ([3378](https://github.com/apache/seatunnel/issues/3378))
+- [Feature] Support Teradata JDBC Sink ([3362](https://github.com/apache/seatunnel/pull/3362))
+- [Feature] Support Sqlite JDBC Sink ([3089](https://github.com/apache/seatunnel/pull/3089))
+- [Feature] Support CDC write DELETE/UPDATE/INSERT events ([3378](https://github.com/apache/seatunnel/issues/3378))
+- [Feature] Support Doris JDBC Sink
+- [Feature] Support Redshift JDBC Sink([#3615](https://github.com/apache/seatunnel/pull/3615))
+- [Improve] Add config item enable upsert by query([#3708](https://github.com/apache/seatunnel/pull/3708))
+- [Improve] Add database field to sink config([#4199](https://github.com/apache/seatunnel/pull/4199))
+- [Improve] Add Vertica connector([#4303](https://github.com/apache/seatunnel/pull/4303))
+
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/sink/Kafka.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/sink/Kafka.md
new file mode 100644
index 000000000000..c0ce93387084
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/sink/Kafka.md
@@ -0,0 +1,196 @@
+# Kafka
+
+> Kafka 数据接收器
+
+## 支持引擎
+
+> Spark
+> Flink
+> SeaTunnel Zeta
+
+## 主要特性
+
+- [x] [精确一次](../../concept/connector-v2-features.md)
+- [ ] [cdc](../../concept/connector-v2-features.md)
+
+> 默认情况下,我们将使用 2pc 来保证消息只发送一次到kafka
+
+## 描述
+
+将 Rows 内容发送到 Kafka topic
+
+## 支持的数据源信息
+
+为了使用 Kafka 连接器,需要以下依赖项
+可以通过 install-plugin.sh 或从 Maven 中央存储库下载
+
+| 数据源 | 支持版本 | Maven |
+|-------|------|-------------------------------------------------------------------------------------------------------|
+| Kafka | 通用 | [下载](https://mvnrepository.com/artifact/org.apache.seatunnel/seatunnel-connectors-v2/connector-kafka) |
+
+## 接收器选项
+
+| 名称 | 类型 | 是否需要 | 默认值 | 描述 |
+|----------------------|--------|------|------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| topic | String | 是 | - | 当表用作接收器时,topic 名称是要写入数据的 topic |
+| bootstrap.servers | String | 是 | - | Kafka brokers 使用逗号分隔 |
+| kafka.config | Map | 否 | - | 除了上述 Kafka Producer 客户端必须指定的参数外,用户还可以为 Producer 客户端指定多个非强制参数,涵盖 [Kafka官方文档中指定的所有生产者参数](https://kafka.apache.org/documentation.html#producerconfigs) |
+| semantics | String | 否 | NON | 可以选择的语义是 EXACTLY_ONCE/AT_LEAST_ONCE/NON,默认 NON。 |
+| partition_key_fields | Array | 否 | - | 配置字段用作 kafka 消息的key |
+| partition | Int | 否 | - | 可以指定分区,所有消息都会发送到此分区 |
+| assign_partitions | Array | 否 | - | 可以根据消息的内容决定发送哪个分区,该参数的作用是分发信息 |
+| transaction_prefix | String | 否 | - | 如果语义指定为EXACTLY_ONCE,生产者将把所有消息写入一个 Kafka 事务中,kafka 通过不同的 transactionId 来区分不同的事务。该参数是kafka transactionId的前缀,确保不同的作业使用不同的前缀 |
+| format | String | 否 | json | 数据格式。默认格式是json。可选文本格式,canal-json、debezium-json 和 avro。如果使用 json 或文本格式。默认字段分隔符是`,`。如果自定义分隔符,请添加`field_delimiter`选项。如果使用canal格式,请参考[canal-json](../formats/canal-json.md)。如果使用debezium格式,请参阅 [debezium-json](../formats/debezium-json.md) 了解详细信息 |
+| field_delimiter | String | 否 | , | 自定义数据格式的字段分隔符 |
+| common-options | | 否 | - | Sink插件常用参数,请参考 [Sink常用选项 ](common-options.md) 了解详情 |
+
+## 参数解释
+
+### Topic 格式
+
+目前支持两种格式:
+
+1. 填写topic名称
+
+2. 使用上游数据中的字段值作为 topic ,格式是 `${your field name}`, 其中 topic 是上游数据的其中一列的值
+
+ 例如,上游数据如下:
+
+| name | age | data |
+|------|-----|---------------|
+| Jack | 16 | data-example1 |
+| Mary | 23 | data-example2 |
+
+如果 `${name}` 设置为 topic。因此,第一行发送到 Jack topic,第二行发送到 Mary topic。
+
+### 语义
+
+在 EXACTLY_ONCE 中,生产者将在 Kafka 事务中写入所有消息,这些消息将在检查点上提交给 Kafka,该模式下能保证数据精确写入kafka一次,即使任务失败重试也不会出现数据重复和丢失
+在 AT_LEAST_ONCE 中,生产者将等待 Kafka 缓冲区中所有未完成的消息在检查点上被 Kafka 生产者确认,该模式下能保证数据至少写入kafka一次,即使任务失败
+NON 不提供任何保证:如果 Kafka 代理出现问题,消息可能会丢失,并且消息可能会重复,该模式下,任务失败重试可能会产生数据丢失或重复。
+
+### 分区关键字段
+
+例如,如果你想使用上游数据中的字段值作为键,可以将这些字段名指定给此属性
+
+上游数据如下所示:
+
+| name | age | data |
+|------|-----|---------------|
+| Jack | 16 | data-example1 |
+| Mary | 23 | data-example2 |
+
+如果将 name 设置为 key,那么 name 列的哈希值将决定消息发送到哪个分区。
+如果没有设置分区键字段,则将发送空消息键。
+消息 key 的格式为 json,如果设置 name 为 key,例如 `{"name":"Jack"}`。
+所选的字段必须是上游数据中已存在的字段。
+
+### 分区分配
+
+假设总有五个分区,配置中的 assign_partitions 字段设置为:
+assign_partitions = ["shoe", "clothing"]
+在这种情况下,包含 "shoe" 的消息将被发送到第零个分区,因为 "shoe" 在 assign_partitions 中被标记为零, 而包含 "clothing" 的消息将被发送到第一个分区。
+对于其他的消息,我们将使用哈希算法将它们均匀地分配到剩余的分区中。
+这个功能是通过 MessageContentPartitioner 类实现的,该类实现了 org.apache.kafka.clients.producer.Partitioner 接口。如果我们需要自定义分区,我们需要实现这个接口。
+
+## 任务示例
+
+### 简单:
+
+> 此示例展示了如何定义一个 SeaTunnel 同步任务,该任务能够通过 FakeSource 自动产生数据并将其发送到 Kafka Sink。在这个例子中,FakeSource 会生成总共 16 行数据(`row.num=16`),每一行都包含两个字段,即 `name`(字符串类型)和 `age`(整型)。最终,这些数据将被发送到名为 test_topic 的 topic 中,因此该 topic 也将包含 16 行数据。
+> 如果你还未安装和部署 SeaTunnel,你需要参照 [安装SeaTunnel](../../start-v2/locally/deployment.md) 的指南来进行安装和部署。完成安装和部署后,你可以按照 [快速开始使用 SeaTunnel 引擎](../../start-v2/locally/quick-start-seatunnel-engine.md) 的指南来运行任务。
+
+```hocon
+# Defining the runtime environment
+env {
+ parallelism = 1
+ job.mode = "BATCH"
+}
+
+source {
+ FakeSource {
+ parallelism = 1
+ result_table_name = "fake"
+ row.num = 16
+ schema = {
+ fields {
+ name = "string"
+ age = "int"
+ }
+ }
+ }
+}
+
+sink {
+ kafka {
+ topic = "test_topic"
+ bootstrap.servers = "localhost:9092"
+ format = json
+ kafka.request.timeout.ms = 60000
+ semantics = EXACTLY_ONCE
+ kafka.config = {
+ acks = "all"
+ request.timeout.ms = 60000
+ buffer.memory = 33554432
+ }
+ }
+}
+```
+
+### AWS MSK SASL/SCRAM
+
+将以下 `${username}` 和 `${password}` 替换为 AWS MSK 中的配置值。
+
+```hocon
+sink {
+ kafka {
+ topic = "seatunnel"
+ bootstrap.servers = "localhost:9092"
+ format = json
+ kafka.request.timeout.ms = 60000
+ semantics = EXACTLY_ONCE
+ kafka.config = {
+ security.protocol=SASL_SSL
+ sasl.mechanism=SCRAM-SHA-512
+ sasl.jaas.config="org.apache.kafka.common.security.scram.ScramLoginModule required \nusername=${username}\npassword=${password};"
+ }
+ }
+}
+```
+
+### AWS MSK IAM
+
+从 https://github.com/aws/aws-msk-iam-auth/releases 下载 `aws-msk-iam-auth-1.1.5.jar`
+并将其放入 `$SEATUNNEL_HOME/plugin/kafka/lib` 中目录。
+请确保 IAM 策略具有 `kafka-cluster:Connect`
+如下配置:
+
+```hocon
+"Effect": "Allow",
+"Action": [
+ "kafka-cluster:Connect",
+ "kafka-cluster:AlterCluster",
+ "kafka-cluster:DescribeCluster"
+],
+```
+
+接收器配置
+
+```hocon
+sink {
+ kafka {
+ topic = "seatunnel"
+ bootstrap.servers = "localhost:9092"
+ format = json
+ kafka.request.timeout.ms = 60000
+ semantics = EXACTLY_ONCE
+ kafka.config = {
+ security.protocol=SASL_SSL
+ sasl.mechanism=AWS_MSK_IAM
+ sasl.jaas.config="software.amazon.msk.auth.iam.IAMLoginModule required;"
+ sasl.client.callback.handler.class="software.amazon.msk.auth.iam.IAMClientCallbackHandler"
+ }
+ }
+}
+```
+
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/sink/LocalFile.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/sink/LocalFile.md
new file mode 100644
index 000000000000..53aa0cb480e6
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/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 时使用。
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/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/sink/Paimon.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/sink/Paimon.md
new file mode 100644
index 000000000000..50f88731d3e7
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/sink/Paimon.md
@@ -0,0 +1,273 @@
+# Paimon
+
+> Paimon 数据连接器
+
+## 描述
+
+Apache Paimon数据连接器。支持cdc写以及自动建表。
+
+## 支持的数据源信息
+
+| 数据源 | 依赖 | Maven |
+|--------|-----------|---------------------------------------------------------------------------|
+| Paimon | hive-exec | [Download](https://mvnrepository.com/artifact/org.apache.hive/hive-exec) |
+| Paimon | libfb303 | [Download](https://mvnrepository.com/artifact/org.apache.thrift/libfb303) |
+
+## 数据源依赖
+
+> 为了兼容不同版本的Hadoop和Hive,在项目pom文件中Hive -exec的作用域为provided,所以如果您使用Flink引擎,首先可能需要将以下Jar包添加到/lib目录下,如果您使用Spark引擎并与Hadoop集成,则不需要添加以下Jar包。
+
+```
+hive-exec-xxx.jar
+libfb303-xxx.jar
+```
+
+> 有些版本的hive-exec包没有libfb303-xxx.jar,所以您还需要手动导入Jar包。
+
+## 主要特性
+
+- [x] [exactly-once](../../concept/connector-v2-features.md)
+
+## 连接器选项
+
+| 名称 | 类型 | 是否必须 | 默认值 | 描述 |
+|-----------------------------|-----|------|------------------------------|---------------------------------------------------------------------------------------------------|---|
+| warehouse | 字符串 | 是 | - | Paimon warehouse路径 |
+| catalog_type | 字符串 | 否 | filesystem | Paimon的catalog类型,目前支持filesystem和hive |
+| catalog_uri | 字符串 | 否 | - | Paimon catalog的uri,仅当catalog_type为hive时需要配置 | |
+| database | 字符串 | 是 | - | 数据库名称 |
+| table | 字符串 | 是 | - | 表名 |
+| hdfs_site_path | 字符串 | 否 | - | hdfs-site.xml文件路径 |
+| schema_save_mode | 枚举 | 否 | CREATE_SCHEMA_WHEN_NOT_EXIST | Schema保存模式 |
+| data_save_mode | 枚举 | 否 | APPEND_DATA | 数据保存模式 |
+| paimon.table.primary-keys | 字符串 | 否 | - | 主键字段列表,联合主键使用逗号分隔(注意:分区字段需要包含在主键字段中) |
+| paimon.table.partition-keys | 字符串 | 否 | - | 分区字段列表,多字段使用逗号分隔 |
+| paimon.table.write-props | Map | 否 | - | Paimon表初始化指定的属性, [参考](https://paimon.apache.org/docs/0.6/maintenance/configurations/#coreoptions) |
+| paimon.hadoop.conf | Map | 否 | - | Hadoop配置文件属性信息 |
+| paimon.hadoop.conf-path | 字符串 | 否 | - | Hadoop配置文件目录,用于加载'core-site.xml', 'hdfs-site.xml', 'hive-site.xml'文件配置 |
+
+## 示例
+
+### 单表
+
+```hocon
+env {
+ parallelism = 1
+ job.mode = "STREAMING"
+ checkpoint.interval = 5000
+}
+
+source {
+ Mysql-CDC {
+ base-url = "jdbc:mysql://127.0.0.1:3306/seatunnel"
+ username = "root"
+ password = "******"
+ table-names = ["seatunnel.role"]
+ }
+}
+
+transform {
+}
+
+sink {
+ Paimon {
+ catalog_name="seatunnel_test"
+ warehouse="file:///tmp/seatunnel/paimon/hadoop-sink/"
+ database="seatunnel"
+ table="role"
+ }
+}
+```
+
+### 单表(指定hadoop HA配置和kerberos配置)
+
+```hocon
+env {
+ parallelism = 1
+ job.mode = "STREAMING"
+ checkpoint.interval = 5000
+}
+
+source {
+ Mysql-CDC {
+ base-url = "jdbc:mysql://127.0.0.1:3306/seatunnel"
+ username = "root"
+ password = "******"
+ table-names = ["seatunnel.role"]
+ }
+}
+
+transform {
+}
+
+sink {
+ Paimon {
+ catalog_name="seatunnel_test"
+ warehouse="hdfs:///tmp/seatunnel/paimon/hadoop-sink/"
+ database="seatunnel"
+ table="role"
+ paimon.hadoop.conf = {
+ fs.defaultFS = "hdfs://nameservice1"
+ dfs.nameservices = "nameservice1"
+ dfs.ha.namenodes.nameservice1 = "nn1,nn2"
+ dfs.namenode.rpc-address.nameservice1.nn1 = "hadoop03:8020"
+ dfs.namenode.rpc-address.nameservice1.nn2 = "hadoop04:8020"
+ dfs.client.failover.proxy.provider.nameservice1 = "org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider"
+ dfs.client.use.datanode.hostname = "true"
+ security.kerberos.login.principal = "your-kerberos-principal"
+ security.kerberos.login.keytab = "your-kerberos-keytab-path"
+ }
+ }
+}
+```
+
+### 单表(使用Hive catalog)
+
+```hocon
+env {
+ parallelism = 1
+ job.mode = "BATCH"
+}
+
+source {
+ FakeSource {
+ schema = {
+ fields {
+ pk_id = bigint
+ name = string
+ score = int
+ }
+ primaryKey {
+ name = "pk_id"
+ columnNames = [pk_id]
+ }
+ }
+ rows = [
+ {
+ kind = INSERT
+ fields = [1, "A", 100]
+ },
+ {
+ kind = INSERT
+ fields = [2, "B", 100]
+ },
+ {
+ kind = INSERT
+ fields = [3, "C", 100]
+ },
+ {
+ kind = INSERT
+ fields = [3, "C", 100]
+ },
+ {
+ kind = INSERT
+ fields = [3, "C", 100]
+ },
+ {
+ kind = INSERT
+ fields = [3, "C", 100]
+ }
+ {
+ kind = UPDATE_BEFORE
+ fields = [1, "A", 100]
+ },
+ {
+ kind = UPDATE_AFTER
+ fields = [1, "A_1", 100]
+ },
+ {
+ kind = DELETE
+ fields = [2, "B", 100]
+ }
+ ]
+ }
+}
+
+sink {
+ Paimon {
+ schema_save_mode = "RECREATE_SCHEMA"
+ catalog_name="seatunnel_test"
+ catalog_type="hive"
+ catalog_uri="thrift://hadoop04:9083"
+ warehouse="hdfs:///tmp/seatunnel"
+ database="seatunnel_test"
+ table="st_test3"
+ paimon.hadoop.conf = {
+ fs.defaultFS = "hdfs://nameservice1"
+ dfs.nameservices = "nameservice1"
+ dfs.ha.namenodes.nameservice1 = "nn1,nn2"
+ dfs.namenode.rpc-address.nameservice1.nn1 = "hadoop03:8020"
+ dfs.namenode.rpc-address.nameservice1.nn2 = "hadoop04:8020"
+ dfs.client.failover.proxy.provider.nameservice1 = "org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider"
+ dfs.client.use.datanode.hostname = "true"
+ }
+ }
+}
+
+```
+
+### 指定paimon的写属性的单表
+
+```hocon
+env {
+ parallelism = 1
+ job.mode = "STREAMING"
+ checkpoint.interval = 5000
+}
+
+source {
+ Mysql-CDC {
+ base-url = "jdbc:mysql://127.0.0.1:3306/seatunnel"
+ username = "root"
+ password = "******"
+ table-names = ["seatunnel.role"]
+ }
+}
+
+sink {
+ Paimon {
+ catalog_name="seatunnel_test"
+ warehouse="file:///tmp/seatunnel/paimon/hadoop-sink/"
+ database="seatunnel"
+ table="role"
+ paimon.table.write-props = {
+ bucket = 2
+ file.format = "parquet"
+ }
+ paimon.table.partition-keys = "dt"
+ paimon.table.primary-keys = "pk_id,dt"
+ }
+}
+```
+
+### 多表
+
+```hocon
+env {
+ parallelism = 1
+ job.mode = "STREAMING"
+ checkpoint.interval = 5000
+}
+
+source {
+ Mysql-CDC {
+ base-url = "jdbc:mysql://127.0.0.1:3306/seatunnel"
+ username = "root"
+ password = "******"
+ table-names = ["seatunnel.role","seatunnel.user","galileo.Bucket"]
+ }
+}
+
+transform {
+}
+
+sink {
+ Paimon {
+ catalog_name="seatunnel_test"
+ warehouse="file:///tmp/seatunnel/paimon/hadoop-sink/"
+ database="${database_name}"
+ table="${table_name}"
+ }
+}
+```
+
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/sink/Phoenix.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/sink/Phoenix.md
new file mode 100644
index 000000000000..9a3adc14e5cf
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/sink/Phoenix.md
@@ -0,0 +1,63 @@
+# Phoenix
+
+> Phoenix 数据接收器
+
+## 描述
+
+该接收器是通过 [Jdbc数据连接器](Jdbc.md)来写Phoenix数据,支持批和流两种模式。测试的Phoenix版本为4.xx和5.xx。
+在底层实现上,通过Phoenix的jdbc驱动,执行upsert语句向HBase写入数据。
+使用Java JDBC连接Phoenix有两种方式:其一是使用JDBC连接zookeeper,其二是通过JDBC瘦客户端连接查询服务器。
+
+> 提示1: 该接收器默认使用的是(thin)驱动jar包。如果需要使用(thick)驱动或者其他版本的Phoenix(thin)驱动,需要重新编译jdbc数据接收器模块。
+>
+> 提示2: 该接收器还不支持精准一次语义(因为Phoenix还不支持XA事务)。
+
+## 主要特性
+
+- [ ] [精准一次](../../concept/connector-v2-features.md)
+
+## 接收器选项
+
+### driver [string]
+
+phoenix(thick)驱动:`org.apache.phoenix.jdbc.PhoenixDriver`
+phoenix(thin)驱动:`org.apache.phoenix.queryserver.client.Driver`
+
+### url [string]
+
+phoenix(thick)驱动:`jdbc:phoenix:localhost:2182/hbase`
+phoenix(thin)驱动:`jdbc:phoenix:thin:url=http://localhost:8765;serialization=PROTOBUF`
+
+### common options
+
+Sink插件常用参数,请参考[Sink常用选项](common-options.md)获取更多细节信息。
+
+## 示例
+
+thick驱动:
+
+```
+ Jdbc {
+ driver = org.apache.phoenix.jdbc.PhoenixDriver
+ url = "jdbc:phoenix:localhost:2182/hbase"
+ query = "upsert into test.sink(age, name) values(?, ?)"
+ }
+
+```
+
+thin驱动:
+
+```
+Jdbc {
+ driver = org.apache.phoenix.queryserver.client.Driver
+ url = "jdbc:phoenix:thin:url=http://spark_e2e_phoenix_sink:8765;serialization=PROTOBUF"
+ query = "upsert into test.sink(age, name) values(?, ?)"
+}
+```
+
+## 变更日志
+
+### 2.2.0-beta 2022-09-26
+
+- 增加Phoenix数据接收器
+
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/sink/Pulsar.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/sink/Pulsar.md
new file mode 100644
index 000000000000..b85a41ae9dfe
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/sink/Pulsar.md
@@ -0,0 +1,168 @@
+# Pulsar
+
+> Pulsar 数据连接器
+
+## 引擎支持
+
+> Spark
+> Flink
+> Seatunnel Zeta
+
+## 核心特性
+
+- [x] [精准一次](../../concept/connector-v2-features.md)
+
+## 描述
+
+Apache Pulsar 的接收连接器。
+
+## 支持的数据源信息
+
+| 数据源 | 支持的版本 |
+|--------|-----------|
+| Pulsar | Universal |
+
+## 输出选项
+
+| 名称 | 类型 | 是否必须 | 默认值 | 描述 |
+|----------------------|--------|------|---------------------|-----------------------------------------|
+| topic | String | Yes | - | 输出到Pulsar主题名称. |
+| client.service-url | String | Yes | - | Pulsar 服务的服务 URL 提供者. |
+| admin.service-url | String | Yes | - | 管理端点的 Pulsar 服务 HTTP URL. |
+| auth.plugin-class | String | No | - | 身份验证插件的名称. |
+| auth.params | String | No | - | 身份验证插件的参数. |
+| format | String | No | json | 数据格式。默认格式为 json。可选的文本格式. |
+| field_delimiter | String | No | , | 自定义数据格式的字段分隔符. |
+| semantics | Enum | No | AT_LEAST_ONCE | 写入 pulsar 的一致性语义. |
+| transaction_timeout | Int | No | 600 | 默认情况下,事务超时指定为 10 分钟. |
+| pulsar.config | Map | No | - | 除了上述必须由 Pulsar 生产者客户端指定的参数外. |
+| message.routing.mode | Enum | No | RoundRobinPartition | 要分区的消息的默认路由模式. |
+| partition_key_fields | array | No | - | 配置哪些字段用作 pulsar 消息的键. |
+| common-options | config | no | - | 源插件常用参数,详见源码 [常用选项](common-options.md). |
+
+## 参数解释
+
+### client.service-url [String]
+
+Pulsar 服务的 Service URL 提供程序。要使用客户端库连接到 Pulsar,
+您需要指定一个 Pulsar 协议 URL。您可以将 Pulsar 协议 URL 分配给特定集群并使用 Pulsar 方案。
+
+例如, `localhost`: `pulsar://localhost:6650,localhost:6651`.
+
+### admin.service-url [String]
+
+管理端点的 Pulsar 服务 HTTP URL.
+
+例如, `http://my-broker.example.com:8080`, or `https://my-broker.example.com:8443` for TLS.
+
+### auth.plugin-class [String]
+
+身份验证插件的名称。
+
+### auth.params [String]
+
+身份验证插件的参数。
+
+例如, `key1:val1,key2:val2`
+
+### format [String]
+
+数据格式。默认格式为 json。可选的文本格式。默认字段分隔符为","。如果自定义分隔符,请添加"field_delimiter"选项。
+
+### field_delimiter [String]
+
+自定义数据格式的字段分隔符。默认field_delimiter为','。
+
+### semantics [Enum]
+
+写入 pulsar 的一致性语义。可用选项包括 EXACTLY_ONCE、NON、AT_LEAST_ONCE、默认AT_LEAST_ONCE。
+如果语义被指定为 EXACTLY_ONCE,我们将使用 2pc 来保证消息被准确地发送到 pulsar 一次。
+如果语义指定为 NON,我们将直接将消息发送到 pulsar,如果作业重启/重试或网络错误,数据可能会重复/丢失。
+
+### transaction_timeout [Int]
+
+默认情况下,事务超时指定为 10 分钟。如果事务未在指定的超时时间内提交,则事务将自动中止。因此,您需要确保超时大于检查点间隔。
+
+### pulsar.config [Map]
+
+除了上述 Pulsar 生产者客户端必须指定的参数外,用户还可以为生产者客户端指定多个非强制性参数,
+涵盖 Pulsar 官方文档中指定的所有生产者参数。
+
+### message.routing.mode [Enum]
+
+要分区的消息的默认路由模式。可用选项包括 SinglePartition、RoundRobinPartition。
+如果选择 SinglePartition,如果未提供密钥,分区生产者将随机选择一个分区并将所有消息发布到该分区中,如果消息上提供了密钥,则分区生产者将对密钥进行哈希处理并将消息分配给特定分区。
+如果选择 RoundRobinPartition,则如果未提供密钥,则生产者将以循环方式跨所有分区发布消息,以实现最大吞吐量。请注意,轮询不是按单个消息完成的,而是设置为相同的批处理延迟边界,以确保批处理有效。
+
+### partition_key_fields [String]
+
+配置哪些字段用作 pulsar 消息的键。
+
+例如,如果要使用上游数据中的字段值作为键,则可以为此属性分配字段名称。
+
+上游数据如下:
+
+| name | age | data |
+|------|-----|---------------|
+| Jack | 16 | data-example1 |
+| Mary | 23 | data-example2 |
+
+如果将 name 设置为键,则 name 列的哈希值将确定消息发送到哪个分区。
+
+如果未设置分区键字段,则将向 null 消息键发送至。
+
+消息键的格式为 json,如果 name 设置为键,例如 '{“name”:“Jack”}'。
+
+所选字段必须是上游的现有字段。
+
+### 常见选项
+
+源插件常用参数,详见源码[常用选项](common-options.md) .
+
+## 任务示例
+
+### 简单:
+
+> 该示例定义了一个 SeaTunnel 同步任务,该任务通过 FakeSource 自动生成数据并将其发送到 Pulsar Sink。FakeSource 总共生成 16 行数据 (row.num=16),每行有两个字段,name(字符串类型)和 age(int 类型)。最终目标主题是test_topic主题中还将有 16 行数据。 如果您尚未安装和部署 SeaTunnel,则需要按照[安装Seatunnel](../../start-v2/locally/deployment.md) SeaTunnel 中的说明安装和部署 SeaTunnel。然后按照 [SeaTunnel 引擎快速入门](../../start-v2/locally/quick-start-seatunnel-engine.md)中的说明运行此作业。
+
+```hocon
+# Defining the runtime environment
+env {
+ # You can set flink configuration here
+ execution.parallelism = 1
+ job.mode = "BATCH"
+}
+
+source {
+ FakeSource {
+ parallelism = 1
+ result_table_name = "fake"
+ row.num = 16
+ schema = {
+ fields {
+ name = "string"
+ age = "int"
+ }
+ }
+ }
+}
+
+sink {
+ Pulsar {
+ topic = "example"
+ client.service-url = "localhost:pulsar://localhost:6650"
+ admin.service-url = "http://my-broker.example.com:8080"
+ result_table_name = "test"
+ pulsar.config = {
+ sendTimeoutMs = 30000
+ }
+ }
+}
+```
+
+## 更改日志
+
+### 下一个版本
+
+- 添加 Pulsar Sink 连接器
+
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/sink/Rabbitmq.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/sink/Rabbitmq.md
new file mode 100644
index 000000000000..6562dd2fdc5c
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/sink/Rabbitmq.md
@@ -0,0 +1,122 @@
+# Rabbitmq
+
+> Rabbitmq 数据接收器
+
+## 描述
+
+该数据接收器是将数据写入Rabbitmq。
+
+## 主要特性
+
+- [ ] [精准一次](../../concept/connector-v2-features.md)
+
+## 接收器选项
+
+| 名称 | 类型 | 是否必须 | 默认值 |
+|----------------------------|---------|------|-------|
+| host | string | yes | - |
+| port | int | yes | - |
+| virtual_host | string | yes | - |
+| username | string | yes | - |
+| password | string | yes | - |
+| queue_name | string | yes | - |
+| url | string | no | - |
+| network_recovery_interval | int | no | - |
+| topology_recovery_enabled | boolean | no | - |
+| automatic_recovery_enabled | boolean | no | - |
+| use_correlation_id | boolean | no | false |
+| connection_timeout | int | no | - |
+| rabbitmq.config | map | no | - |
+| common-options | | no | - |
+
+### host [string]
+
+Rabbitmq服务器地址
+
+### port [int]
+
+Rabbitmq服务器端口
+
+### virtual_host [string]
+
+virtual host – 连接broker使用的vhost
+
+### username [string]
+
+连接broker时使用的用户名
+
+### password [string]
+
+连接broker时使用的密码
+
+### url [string]
+
+设置host、port、username、password和virtual host的简便方式。
+
+### queue_name [string]
+
+数据写入的队列名。
+
+### schema [Config]
+
+#### fields [Config]
+
+上游数据的模式字段。
+
+### network_recovery_interval [int]
+
+自动恢复需等待多长时间才尝试重连,单位为毫秒。
+
+### topology_recovery_enabled [boolean]
+
+设置为true,表示启用拓扑恢复。
+
+### automatic_recovery_enabled [boolean]
+
+设置为true,表示启用连接恢复。
+
+### use_correlation_id [boolean]
+
+接收到的消息是否都提供唯一ID,来删除重复的消息达到幂等(在失败的情况下)
+
+### connection_timeout [int]
+
+TCP连接建立的超时时间,单位为毫秒;0代表不限制。
+
+### rabbitmq.config [map]
+
+In addition to the above parameters that must be specified by the RabbitMQ client, the user can also specify multiple non-mandatory parameters for the client, covering [all the parameters specified in the official RabbitMQ document](https://www.rabbitmq.com/configure.html).
+除了上面提及必须设置的RabbitMQ客户端参数,你也还可以为客户端指定多个非强制参数,参见 [RabbitMQ官方文档参数设置](https://www.rabbitmq.com/configure.html)。
+
+### common options
+
+Sink插件常用参数,请参考[Sink常用选项](common-options.md)获取更多细节信息。
+
+## 示例
+
+simple:
+
+```hocon
+sink {
+ RabbitMQ {
+ host = "rabbitmq-e2e"
+ port = 5672
+ virtual_host = "/"
+ username = "guest"
+ password = "guest"
+ queue_name = "test1"
+ rabbitmq.config = {
+ requested-heartbeat = 10
+ connection-timeout = 10
+ }
+ }
+}
+```
+
+## 变更日志
+
+### 随后版本
+
+- 增加Rabbitmq数据接收器
+- [Improve] 将连接器自定义配置前缀的数据类型更改为Map [3719](https://github.com/apache/seatunnel/pull/3719)
+
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/sink/Redis.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/sink/Redis.md
new file mode 100644
index 000000000000..ac09849b7eb4
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/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)
+
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/sink/StarRocks.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/sink/StarRocks.md
new file mode 100644
index 000000000000..6be7ff7e8e01
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/sink/StarRocks.md
@@ -0,0 +1,288 @@
+# StarRocks
+
+> StarRocks 数据接收器
+
+## 引擎支持
+
+> Spark
+> Flink
+> SeaTunnel Zeta
+
+## 主要特性
+
+- [ ] [精准一次](../../concept/connector-v2-features.md)
+- [x] [cdc](../../concept/connector-v2-features.md)
+
+## 描述
+
+该接收器用于将数据写入到StarRocks中。支持批和流两种模式。
+StarRocks数据接收器内部实现采用了缓存,通过stream load将数据批导入。
+
+## 接收器选项
+
+| 名称 | 类型 | 是否必须 | 默认值 | Description |
+|-----------------------------|---------|------|------------------------------|---------------------------------------------------------------------------------------------------------------------|
+| nodeUrls | list | yes | - | `StarRocks`集群地址, 格式为 `["fe_ip:fe_http_port", ...]` |
+| base-url | string | yes | - | JDBC URL样式的连接信息。如:`jdbc:mysql://localhost:9030/` 或 `jdbc:mysql://localhost:9030` 或 `jdbc:mysql://localhost:9030/db` |
+| username | string | yes | - | 目标`StarRocks` 用户名 |
+| password | string | yes | - | 目标`StarRocks` 密码 |
+| database | string | yes | - | 指定目标 StarRocks 表所在的数据库的名称 |
+| table | string | no | - | 指定目标 StarRocks 表的名称, 如果没有设置该值,则表名与上游表名相同 |
+| labelPrefix | string | no | - | StarRocks stream load作业标签前缀 |
+| batch_max_rows | long | no | 1024 | 在批写情况下,当缓冲区数量达到`batch_max_rows`数量或`batch_max_bytes`字节大小或者时间达到`checkpoint.interval`时,数据会被刷新到StarRocks |
+| batch_max_bytes | int | no | 5 * 1024 * 1024 | 在批写情况下,当缓冲区数量达到`batch_max_rows`数量或`batch_max_bytes`字节大小或者时间达到`checkpoint.interval`时,数据会被刷新到StarRocks |
+| max_retries | int | no | - | 数据写入StarRocks失败后的重试次数 |
+| retry_backoff_multiplier_ms | int | no | - | 用作生成下一个退避延迟的乘数 |
+| max_retry_backoff_ms | int | no | - | 向StarRocks发送重试请求之前的等待时长 |
+| enable_upsert_delete | boolean | no | false | 是否开启upsert/delete事件的同步,仅仅支持主键模型的表 |
+| save_mode_create_template | string | no | 参见表下方的说明 | 参见表下方的说明 |
+| starrocks.config | map | no | - | stream load `data_desc`参数 |
+| http_socket_timeout_ms | int | no | 180000 | http socket超时时间,默认为3分钟 |
+| schema_save_mode | Enum | no | CREATE_SCHEMA_WHEN_NOT_EXIST | 在同步任务打开之前,针对目标端已存在的表结构选择不同的处理方法 |
+| data_save_mode | Enum | no | APPEND_DATA | 在同步任务打开之前,针对目标端已存在的数据选择不同的处理方法 |
+| custom_sql | String | no | - | 当data_save_mode设置为CUSTOM_PROCESSING时,必须同时设置CUSTOM_SQL参数。CUSTOM_SQL的值为可执行的SQL语句,在同步任务开启前SQL将会被执行 |
+
+### save_mode_create_template
+
+StarRocks数据接收器使用模板,在需求需要的时候也可以修改模板,并结合上游数据类型和结构生成表的创建语句来自动创建StarRocks表。当前仅在多表模式下有效。
+
+默认模板如下:
+
+```sql
+CREATE TABLE IF NOT EXISTS `${database}`.`${table_name}` (
+${rowtype_primary_key},
+${rowtype_fields}
+) ENGINE=OLAP
+PRIMARY KEY (${rowtype_primary_key})
+DISTRIBUTED BY HASH (${rowtype_primary_key})PROPERTIES (
+"replication_num" = "1"
+)
+```
+
+在模板中添加自定义字段,比如说加上`id`字段的修改模板如下:
+
+```sql
+CREATE TABLE IF NOT EXISTS `${database}`.`${table_name}`
+(
+ id,
+ ${rowtype_fields}
+) ENGINE = OLAP DISTRIBUTED BY HASH (${rowtype_primary_key})
+ PROPERTIES
+(
+ "replication_num" = "1"
+);
+```
+
+StarRocks数据接收器根据上游数据自动获取相应的信息来填充模板,并且会移除`rowtype_fields`中的id字段信息。使用此方法可用来为自定义字段修改类型及相关属性。
+
+可以使用的占位符有:
+
+- database: 上游数据模式的库名称
+- table_name: 上游数据模式的表名称
+- rowtype_fields: 上游数据模式的所有字段信息,连接器会将字段信息自动映射到StarRocks对应的类型
+- rowtype_primary_key: 上游数据模式的主键信息,结果可能是列表
+- rowtype_unique_key: 上游数据模式的唯一键信息,结果可能是列表
+
+### table [string]
+
+使用选项参数`database`和`table-name`自动生成SQL,并接收上游输入数据写入StarRocks中。
+
+此选项与 `query` 是互斥的,具具有更高的优先级。
+
+table选项参数可以填入一任意表名,这个名字最终会被用作目标表的表名,并且支持变量(`${table_name}`,`${schema_name}`)。
+替换规则如下:`${schema_name}` 将替换传递给目标端的 SCHEMA 名称,`${table_name}` 将替换传递给目标端的表名。
+
+例如:
+1. test_${schema_name}_${table_name}_test
+2. sink_sinktable
+3. ss_${table_name}
+
+### schema_save_mode[Enum]
+
+在同步任务打开之前,针对目标端已存在的表结构选择不同的处理方法。可选值有:
+`RECREATE_SCHEMA` :不存在的表会直接创建,已存在的表会删除并根据参数重新创建
+`CREATE_SCHEMA_WHEN_NOT_EXIST` :忽略已存在的表,不存在的表会直接创建
+`ERROR_WHEN_SCHEMA_NOT_EXIST` :当有不存在的表时会直接报错
+
+### data_save_mode[Enum]
+
+在同步任务打开之前,针对目标端已存在的数据选择不同的处理方法。可选值有:
+`DROP_DATA`: 保存数据库结构,但是会删除表中存量数据
+`APPEND_DATA`:保存数据库结构和相关的表存量数据
+`CUSTOM_PROCESSING`:自定义处理
+`ERROR_WHEN_DATA_EXISTS`:当对应表存在数据时直接报错
+
+### custom_sql[String]
+
+当data_save_mode设置为CUSTOM_PROCESSING时,必须同时设置CUSTOM_SQL参数。CUSTOM_SQL的值为可执行的SQL语句,在同步任务开启前SQL将会被执行。
+
+## 数据类型映射
+
+| StarRocks数据类型 | SeaTunnel数据类型 |
+|---------------|---------------|
+| BOOLEAN | BOOLEAN |
+| TINYINT | TINYINT |
+| SMALLINT | SMALLINT |
+| INT | INT |
+| BIGINT | BIGINT |
+| FLOAT | FLOAT |
+| DOUBLE | DOUBLE |
+| DECIMAL | DECIMAL |
+| DATE | STRING |
+| TIME | STRING |
+| DATETIME | STRING |
+| STRING | STRING |
+| ARRAY | STRING |
+| MAP | STRING |
+| BYTES | STRING |
+
+#### 支持导入的数据格式
+
+StarRocks数据接收器支持的格式有CSV和JSON格式。
+
+## 任务示例
+
+### 简单示例
+
+> 接下来给出一个示例,该示例包含多种数据类型的数据写入,且用户需要为目标端下游创建相应表
+
+```hocon
+env {
+ parallelism = 1
+ job.mode = "BATCH"
+ checkpoint.interval = 10000
+}
+
+source {
+ FakeSource {
+ row.num = 10
+ map.size = 10
+ array.size = 10
+ bytes.length = 10
+ string.length = 10
+ schema = {
+ fields {
+ c_map = "map>"
+ c_array = "array"
+ c_string = string
+ c_boolean = boolean
+ c_tinyint = tinyint
+ c_smallint = smallint
+ c_int = int
+ c_bigint = bigint
+ c_float = float
+ c_double = double
+ c_decimal = "decimal(16, 1)"
+ c_null = "null"
+ c_bytes = bytes
+ c_date = date
+ c_timestamp = timestamp
+ }
+ }
+ }
+}
+
+sink {
+ StarRocks {
+ nodeUrls = ["e2e_starRocksdb:8030"]
+ username = root
+ password = ""
+ database = "test"
+ table = "e2e_table_sink"
+ batch_max_rows = 10
+ starrocks.config = {
+ format = "JSON"
+ strip_outer_array = true
+ }
+ }
+}
+```
+
+### 支持写入cdc变更事件(INSERT/UPDATE/DELETE)示例
+
+```hocon
+sink {
+ StarRocks {
+ nodeUrls = ["e2e_starRocksdb:8030"]
+ username = root
+ password = ""
+ database = "test"
+ table = "e2e_table_sink"
+ ...
+
+ // 支持upsert/delete事件的同步(需要将选项参数enable_upsert_delete设置为true),仅支持表引擎为主键模型
+ enable_upsert_delete = true
+ }
+}
+```
+
+### JSON格式数据导入示例
+
+```
+sink {
+ StarRocks {
+ nodeUrls = ["e2e_starRocksdb:8030"]
+ username = root
+ password = ""
+ database = "test"
+ table = "e2e_table_sink"
+ batch_max_rows = 10
+ starrocks.config = {
+ format = "JSON"
+ strip_outer_array = true
+ }
+ }
+}
+
+```
+
+### CSV格式数据导入示例
+
+```
+sink {
+ StarRocks {
+ nodeUrls = ["e2e_starRocksdb:8030"]
+ username = root
+ password = ""
+ database = "test"
+ table = "e2e_table_sink"
+ batch_max_rows = 10
+ starrocks.config = {
+ format = "CSV"
+ column_separator = "\\x01"
+ row_delimiter = "\\x02"
+ }
+ }
+}
+```
+
+### 使用save_mode的示例
+
+```
+sink {
+ StarRocks {
+ nodeUrls = ["e2e_starRocksdb:8030"]
+ username = root
+ password = ""
+ database = "test"
+ table = "test_${schema_name}_${table_name}"
+ schema_save_mode = "CREATE_SCHEMA_WHEN_NOT_EXIST"
+ data_save_mode="APPEND_DATA"
+ batch_max_rows = 10
+ starrocks.config = {
+ format = "CSV"
+ column_separator = "\\x01"
+ row_delimiter = "\\x02"
+ }
+ }
+}
+```
+
+## 变更日志
+
+### 随后版本
+
+- 增加StarRocks数据接收器
+- [Improve] 将连接器自定义配置前缀的数据类型更改为Map [3719](https://github.com/apache/seatunnel/pull/3719)
+- [Feature] 支持写入cdc变更事件(INSERT/UPDATE/DELETE) [3865](https://github.com/apache/seatunnel/pull/3865)
+
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/sink/common-options.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/sink/common-options.md
new file mode 100644
index 000000000000..8569b46da0e8
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/sink/common-options.md
@@ -0,0 +1,58 @@
+# Sink 常用选项
+
+> Sink 连接器常用参数
+
+| 名称 | 类型 | 是否需要 | 默认值 |
+|-------------------|--------|------|-----|
+| source_table_name | string | 否 | - |
+| parallelism | int | 否 | - |
+
+### source_table_name [string]
+
+当不指定 `source_table_name` 时,当前插件处理配置文件中上一个插件输出的数据集 `dataset`
+
+当指定了 `source_table_name` 时,当前插件正在处理该参数对应的数据集
+
+### parallelism [int]
+
+当没有指定`parallelism`时,默认使用 env 中的 `parallelism`。
+
+当指定 `parallelism` 时,它将覆盖 env 中的 `parallelism`。
+
+## Examples
+
+```bash
+source {
+ FakeSourceStream {
+ parallelism = 2
+ result_table_name = "fake"
+ field_name = "name,age"
+ }
+}
+
+transform {
+ Filter {
+ source_table_name = "fake"
+ fields = [name]
+ result_table_name = "fake_name"
+ }
+ Filter {
+ source_table_name = "fake"
+ fields = [age]
+ result_table_name = "fake_age"
+ }
+}
+
+sink {
+ Console {
+ source_table_name = "fake_name"
+ }
+ Console {
+ source_table_name = "fake_age"
+ }
+}
+```
+
+> 如果作业只有一个 source 和一个(或零个)transform 和一个 sink ,则不需要为连接器指定 `source_table_name` 和 `result_table_name`。
+> 如果 source 、transform 和 sink 中任意运算符的数量大于 1,则必须为作业中的每个连接器指定 `source_table_name` 和 `result_table_name`
+
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/source.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/source.md
new file mode 100644
index 000000000000..e69de29bb2d1
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/source/Hbase.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/source/Hbase.md
new file mode 100644
index 000000000000..5f15a30b99aa
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/source/Hbase.md
@@ -0,0 +1,96 @@
+# Hbase
+
+> Hbase 源连接器
+
+## 描述
+
+从 Apache Hbase 读取数据。
+
+## 主要功能
+
+- [x] [批处理](../../concept/connector-v2-features.md)
+- [ ] [流处理](../../concept/connector-v2-features.md)
+- [ ] [精确一次](../../concept/connector-v2-features.md)
+- [x] [Schema](../../concept/connector-v2-features.md)
+- [x] [并行度](../../concept/connector-v2-features.md)
+- [ ] [支持用户定义的拆分](../../concept/connector-v2-features.md)
+
+## 选项
+
+| 名称 | 类型 | 必填 | 默认值 |
+|--------------------|---------|----|-------|
+| zookeeper_quorum | string | 是 | - |
+| table | string | 是 | - |
+| schema | config | 是 | - |
+| hbase_extra_config | string | 否 | - |
+| caching | int | 否 | -1 |
+| batch | int | 否 | -1 |
+| cache_blocks | boolean | 否 | false |
+| common-options | | 否 | - |
+
+### zookeeper_quorum [string]
+
+hbase的zookeeper集群主机,例如:“hadoop001:2181,hadoop002:2181,hadoop003:2181”
+
+### table [string]
+
+要写入的表名,例如:“seatunnel”
+
+### schema [config]
+
+Hbase 使用字节数组进行存储。因此,您需要为表中的每一列配置数据类型。有关更多信息,请参阅:[guide](../../concept/schema-feature.md#how-to-declare-type-supported)。
+
+### hbase_extra_config [config]
+
+hbase 的额外配置
+
+### caching
+
+caching 参数用于设置在扫描过程中一次从服务器端获取的行数。这可以减少客户端与服务器之间的往返次数,从而提高扫描效率。默认值:-1
+
+### batch
+
+batch 参数用于设置在扫描过程中每次返回的最大列数。这对于处理有很多列的行特别有用,可以避免一次性返回过多数据,从而节省内存并提高性能。
+
+### cache_blocks
+
+cache_blocks 参数用于设置在扫描过程中是否缓存数据块。默认情况下,HBase 会在扫描时将数据块缓存到块缓存中。如果设置为 false,则在扫描过程中不会缓存数据块,从而减少内存的使用。在SeaTunnel中默认值为: false
+
+### 常用选项
+
+Source 插件常用参数,具体请参考 [Source 常用选项](common-options.md)
+
+## 示例
+
+```bash
+source {
+ Hbase {
+ zookeeper_quorum = "hadoop001:2181,hadoop002:2181,hadoop003:2181"
+ table = "seatunnel_test"
+ caching = 1000
+ batch = 100
+ cache_blocks = false
+ schema = {
+ columns = [
+ {
+ name = "rowkey"
+ type = string
+ },
+ {
+ name = "columnFamily1:column1"
+ type = boolean
+ },
+ {
+ name = "columnFamily1:column2"
+ type = double
+ },
+ {
+ name = "columnFamily2:column1"
+ type = bigint
+ }
+ ]
+ }
+ }
+}
+```
+
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/source/HdfsFile.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/source/HdfsFile.md
new file mode 100644
index 000000000000..efce1d140171
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/source/HdfsFile.md
@@ -0,0 +1,127 @@
+# Hdfs文件
+
+> Hdfs文件 数据源连接器
+
+## 支持的引擎
+
+> Spark
+> Flink
+> SeaTunnel Zeta
+
+## 主要特性
+
+- [x] [批处理](../../concept/connector-v2-features.md)
+- [ ] [流处理](../../concept/connector-v2-features.md)
+- [x] [精确一次](../../concept/connector-v2-features.md)
+
+在一次 pollNext 调用中读取分片中的所有数据。将读取的分片保存在快照中。
+
+- [x] [列投影](../../concept/connector-v2-features.md)
+- [x] [并行度](../../concept/connector-v2-features.md)
+- [ ] [支持用户定义的分片](../../concept/connector-v2-features.md)
+- [x] 文件格式
+ - [x] 文本
+ - [x] CSV
+ - [x] Parquet
+ - [x] ORC
+ - [x] JSON
+ - [x] Excel
+
+## 描述
+
+从Hdfs文件系统中读取数据。
+
+## 支持的数据源信息
+
+| 数据源 | 支持的版本 |
+|--------|------------------|
+| Hdfs文件 | hadoop 2.x 和 3.x |
+
+## 源选项
+
+| 名称 | 类型 | 是否必须 | 默认值 | 描述 |
+|---------------------------|---------|------|----------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| path | string | 是 | - | 源文件路径。 |
+| file_format_type | string | 是 | - | 我们支持以下文件类型:`text` `json` `csv` `orc` `parquet` `excel`。请注意,最终文件名将以文件格式的后缀结束,文本文件的后缀是 `txt`。 |
+| fs.defaultFS | string | 是 | - | 以 `hdfs://` 开头的 Hadoop 集群地址,例如:`hdfs://hadoopcluster`。 |
+| read_columns | list | 否 | - | 数据源的读取列列表,用户可以使用它实现字段投影。支持的文件类型的列投影如下所示:[text,json,csv,orc,parquet,excel]。提示:如果用户在读取 `text` `json` `csv` 文件时想要使用此功能,必须配置 schema 选项。 |
+| hdfs_site_path | string | 否 | - | `hdfs-site.xml` 的路径,用于加载 namenodes 的 ha 配置。 |
+| delimiter/field_delimiter | string | 否 | \001 | 字段分隔符,用于告诉连接器在读取文本文件时如何切分字段。默认 `\001`,与 Hive 的默认分隔符相同。 |
+| parse_partition_from_path | boolean | 否 | true | 控制是否从文件路径中解析分区键和值。例如,如果您从路径 `hdfs://hadoop-cluster/tmp/seatunnel/parquet/name=tyrantlucifer/age=26` 读取文件,则来自文件的每条记录数据将添加这两个字段:[name:tyrantlucifer,age:26]。提示:不要在 schema 选项中定义分区字段。 |
+| date_format | string | 否 | yyyy-MM-dd | 日期类型格式,用于告诉连接器如何将字符串转换为日期,支持的格式如下:`yyyy-MM-dd` `yyyy.MM.dd` `yyyy/MM/dd`,默认 `yyyy-MM-dd`。日期时间类型格式,用于告诉连接器如何将字符串转换为日期时间,支持的格式如下:`yyyy-MM-dd HH:mm:ss` `yyyy.MM.dd HH:mm:ss` `yyyy/MM/dd HH:mm:ss` `yyyyMMddHHmmss`,默认 `yyyy-MM-dd HH:mm:ss`。 |
+| time_format | string | 否 | HH:mm:ss | 时间类型格式,用于告诉连接器如何将字符串转换为时间,支持的格式如下:`HH:mm:ss` `HH:mm:ss.SSS`,默认 `HH:mm:ss`。 |
+| remote_user | string | 否 | - | 用于连接 Hadoop 的登录用户。它旨在用于 RPC 中的远程用户,不会有任何凭据。 |
+| krb5_path | string | 否 | /etc/krb5.conf | kerberos 的 krb5 路径。 |
+| kerberos_principal | string | 否 | - | kerberos 的 principal。 |
+| kerberos_keytab_path | string | 否 | - | kerberos 的 keytab 路径。 |
+| skip_header_row_number | long | 否 | 0 | 跳过前几行,但仅适用于 txt 和 csv。例如,设置如下:`skip_header_row_number = 2`。然后 Seatunnel 将跳过源文件中的前两行。 |
+| schema | config | 否 | - | 上游数据的模式字段。 |
+| sheet_name | string | 否 | - | 读取工作簿的表格,仅在文件格式为 excel 时使用。 |
+| compress_codec | string | 否 | none | 文件的压缩编解码器。 |
+| common-options | | 否 | - | 源插件通用参数,请参阅 [源通用选项](../../../en/connector-v2/source/common-options.md) 获取详细信息。 |
+
+### delimiter/field_delimiter [string]
+
+**delimiter** 参数在版本 2.3.5 后将被弃用,请改用 **field_delimiter**。
+
+### compress_codec [string]
+
+文件的压缩编解码器及支持的详细信息如下所示:
+
+- txt:`lzo` `none`
+- json:`lzo` `none`
+- csv:`lzo` `none`
+- orc/parquet:
+ 自动识别压缩类型,无需额外设置。
+
+### 提示
+
+> 如果您使用 spark/flink,为了
+
+使用此连接器,您必须确保您的 spark/flink 集群已经集成了 hadoop。测试过的 hadoop 版本是 2.x。如果您使用 SeaTunnel Engine,则在下载和安装 SeaTunnel Engine 时会自动集成 hadoop jar。您可以检查 `${SEATUNNEL_HOME}/lib` 下的 jar 包来确认这一点。
+
+## 任务示例
+
+### 简单示例:
+
+> 此示例定义了一个 SeaTunnel 同步任务,从 Hdfs 中读取数据并将其发送到 Hdfs。
+
+```
+# 定义运行时环境
+env {
+ parallelism = 1
+ job.mode = "BATCH"
+}
+
+source {
+ HdfsFile {
+ schema {
+ fields {
+ name = string
+ age = int
+ }
+ }
+ path = "/apps/hive/demo/student"
+ type = "json"
+ fs.defaultFS = "hdfs://namenode001"
+ }
+ # 如果您想获取有关如何配置 seatunnel 和查看源插件完整列表的更多信息,
+ # 请访问 https://seatunnel.apache.org/docs/category/source-v2
+}
+
+transform {
+ # 如果您想获取有关如何配置 seatunnel 和查看转换插件完整列表的更多信息,
+ # 请访问 https://seatunnel.apache.org/docs/category/transform-v2
+}
+
+sink {
+ HdfsFile {
+ fs.defaultFS = "hdfs://hadoopcluster"
+ path = "/tmp/hive/warehouse/test2"
+ file_format = "orc"
+ }
+ # 如果您想获取有关如何配置 seatunnel 和查看接收器插件完整列表的更多信息,
+ # 请访问 https://seatunnel.apache.org/docs/category/sink-v2
+}
+```
+
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/source/Sls.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/source/Sls.md
new file mode 100644
index 000000000000..d0e10257258f
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/source/Sls.md
@@ -0,0 +1,87 @@
+# Sls
+
+> Sls source connector
+
+## 支持的引擎
+
+> Spark
+> Flink
+> Seatunnel Zeta
+
+## 主要特性
+
+- [x] [batch](../../concept/connector-v2-features.md)
+- [x] [stream](../../concept/connector-v2-features.md)
+- [x] [exactly-once](../../concept/connector-v2-features.md)
+- [ ] [column projection](../../concept/connector-v2-features.md)
+- [x] [parallelism](../../concept/connector-v2-features.md)
+- [ ] [support user-defined split](../../concept/connector-v2-features.md)
+
+## 描述
+
+从阿里云Sls日志服务中读取数据。
+
+## 支持的数据源信息
+
+为了使用Sls连接器,需要以下依赖关系。
+它们可以通过install-plugin.sh或Maven中央存储库下载。
+
+| 数据源 | 支持的版本 | Maven |
+|-----|-----------|-----------------------------------------------------------------------------------------------------------|
+| Sls | Universal | [Download](https://mvnrepository.com/artifact/org.apache.seatunnel/seatunnel-connectors-v2/connector-sls) |
+
+## Source Options
+
+| Name | Type | Required | Default | Description |
+|-------------------------------------|---------------------------------------------|----------|--------------------------|------------------------------------------------------------------------------------------------------------------------------------|
+| project | String | Yes | - | [阿里云 Sls 项目](https://help.aliyun.com/zh/sls/user-guide/manage-a-project?spm=a2c4g.11186623.0.0.6f9755ebyfaYSl) |
+| logstore | String | Yes | - | [阿里云 Sls 日志库](https://help.aliyun.com/zh/sls/user-guide/manage-a-logstore?spm=a2c4g.11186623.0.0.13137c08nfuiBC) |
+| endpoint | String | Yes | - | [阿里云访问服务点](https://help.aliyun.com/zh/sls/developer-reference/api-sls-2020-12-30-endpoint?spm=a2c4g.11186623.0.0.548945a8UyJULa) |
+| access_key_id | String | Yes | - | [阿里云访问用户ID](https://help.aliyun.com/zh/ram/user-guide/create-an-accesskey-pair?spm=a2c4g.11186623.0.0.4a6e4e554CKhSc#task-2245479) |
+| access_key_secret | String | Yes | - | [阿里云访问用户密码](https://help.aliyun.com/zh/ram/user-guide/create-an-accesskey-pair?spm=a2c4g.11186623.0.0.4a6e4e554CKhSc#task-2245479) |
+| start_mode | StartMode[earliest],[group_cursor],[latest] | No | group_cursor | 消费者的初始消费模式 |
+| consumer_group | String | No | SeaTunnel-Consumer-Group | Sls消费者组id,用于区分不同的消费者组 |
+| auto_cursor_reset | CursorMode[begin],[end] | No | end | 当消费者组中没有记录读取游标时,初始化读取游标 |
+| batch_size | Int | No | 1000 | 每次从SLS中读取的数据量 |
+| partition-discovery.interval-millis | Long | No | -1 | 动态发现主题和分区的间隔 |
+
+## 任务示例
+
+### 简单示例
+
+> 此示例读取sls的logstore1的数据并将其打印到客户端。如果您尚未安装和部署SeaTunnel,则需要按照安装SeaTunnel中的说明安装和部署SeaTunnel。然后按照[快速启动SeaTunnel引擎](../../Start-v2/locale/Quick-Start SeaTunnel Engine.md)中的说明运行此作业。
+
+[创建RAM用户及授权](https://help.aliyun.com/zh/sls/create-a-ram-user-and-authorize-the-ram-user-to-access-log-service?spm=a2c4g.11186623.0.i4), 请确认RAM用户有足够的权限来读取及管理数据,参考:[RAM自定义授权示例](https://help.aliyun.com/zh/sls/use-custom-policies-to-grant-permissions-to-a-ram-user?spm=a2c4g.11186623.0.0.4a6e4e554CKhSc#reference-s3z-m1l-z2b)
+
+```hocon
+# Defining the runtime environment
+env {
+ parallelism = 2
+ job.mode = "STREAMING"
+ checkpoint.interval = 30000
+}
+
+source {
+ Sls {
+ endpoint = "cn-hangzhou-intranet.log.aliyuncs.com"
+ project = "project1"
+ logstore = "logstore1"
+ access_key_id = "xxxxxxxxxxxxxxxxxxxxxxxx"
+ access_key_secret = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
+ schema = {
+ fields = {
+ id = "int"
+ name = "string"
+ description = "string"
+ weight = "string"
+ }
+ }
+ }
+}
+
+sink {
+ Console {
+ }
+}
+```
+
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/source/common-options.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/source/common-options.md
new file mode 100644
index 000000000000..902dca2c1953
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/connector-v2/source/common-options.md
@@ -0,0 +1,81 @@
+# Source Common Options
+
+> Source connector 的常用参数
+
+| 名称 | 类型 | 必填 | 默认值 | 描述 |
+|-------------------|--------|----|-----|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| result_table_name | String | 否 | - | 当未指定 `result_table_name` 时,此插件处理的数据将不会被注册为可由其他插件直接访问的数据集 `(dataStream/dataset)`,或称为临时表 `(table)`。
当指定了 `result_table_name` 时,此插件处理的数据将被注册为可由其他插件直接访问的数据集 `(dataStream/dataset)`,或称为临时表 `(table)`。此处注册的数据集 `(dataStream/dataset)` 可通过指定 `source_table_name` 直接被其他插件访问。 |
+| parallelism | Int | 否 | - | 当未指定 `parallelism` 时,默认使用环境中的 `parallelism`。
当指定了 `parallelism` 时,将覆盖环境中的 `parallelism` 设置。 |
+
+# 重要提示
+
+在作业配置中使用 `result_table_name` 时,必须设置 `source_table_name` 参数。
+
+## 任务示例
+
+### 简单示例
+
+> 注册一个流或批处理数据源,并在注册时返回表名 `fake_table`
+
+```bash
+source {
+ FakeSourceStream {
+ result_table_name = "fake_table"
+ }
+}
+```
+
+### 复杂示例
+
+> 这是将Fake数据源转换并写入到两个不同的目标中
+
+```bash
+env {
+ job.mode = "BATCH"
+}
+
+source {
+ FakeSource {
+ result_table_name = "fake"
+ row.num = 100
+ schema = {
+ fields {
+ id = "int"
+ name = "string"
+ age = "int"
+ c_timestamp = "timestamp"
+ c_date = "date"
+ c_map = "map"
+ c_array = "array"
+ c_decimal = "decimal(30, 8)"
+ c_row = {
+ c_row = {
+ c_int = int
+ }
+ }
+ }
+ }
+ }
+}
+
+transform {
+ Sql {
+ source_table_name = "fake"
+ result_table_name = "fake1"
+ # 查询表名必须与字段 'source_table_name' 相同
+ query = "select id, regexp_replace(name, '.+', 'b') as name, age+1 as age, pi() as pi, c_timestamp, c_date, c_map, c_array, c_decimal, c_row from fake"
+ }
+ # SQL 转换支持基本函数和条件操作
+ # 但不支持复杂的 SQL 操作,包括:多源表/行 JOIN 和聚合操作等
+}
+
+sink {
+ Console {
+ source_table_name = "fake1"
+ }
+ Console {
+ source_table_name = "fake"
+ }
+}
+```
+
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/contribution/coding-guide.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/contribution/coding-guide.md
new file mode 100644
index 000000000000..8ee04d4374a5
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/contribution/coding-guide.md
@@ -0,0 +1,111 @@
+# 编码指南
+
+本指南整体介绍了当前 Apache SeaTunnel 的模块和提交一个高质量 pull request 的最佳实践。
+
+## 模块概述
+
+| 模块名 | 介绍 |
+|----------------------------------------|--------------------------------------------------------------------|
+| seatunnel-api | SeaTunnel connector V2 API 模块 |
+| seatunnel-common | SeaTunnel 通用模块 |
+| seatunnel-connectors-v2 | SeaTunnel connector V2 模块, connector V2 处于社区重点开发中 |
+| seatunnel-core/seatunnel-spark-starter | SeaTunnel connector V2 的 Spark 引擎核心启动模块 |
+| seatunnel-core/seatunnel-flink-starter | SeaTunnel connector V2 的 Flink 引擎核心启动模块 |
+| seatunnel-core/seatunnel-starter | SeaTunnel connector V2 的 SeaTunnel 引擎核心启动模块 |
+| seatunnel-e2e | SeaTunnel 端到端测试模块 |
+| seatunnel-examples | SeaTunnel 本地案例模块, 开发者可以用来单元测试和集成测试 |
+| seatunnel-engine | SeaTunnel 引擎模块, seatunnel-engine 是 SeaTunnel 社区新开发的计算引擎,用来实现数据同步 |
+| seatunnel-formats | SeaTunnel 格式化模块,用来提供格式化数据的能力 |
+| seatunnel-plugin-discovery | SeaTunnel 插件发现模块,用来加载类路径中的SPI插件 |
+| seatunnel-transforms-v2 | SeaTunnel transform V2 模块, transform V2 处于社区重点开发中 |
+| seatunnel-translation | SeaTunnel translation 模块, 用来适配Connector V2 和其他计算引擎, 例如Spark、Flink等 |
+
+## 如何提交一个高质量的Pull Request
+
+1. 创建实体类的时候使用 `lombok` 插件的注解(`@Data` `@Getter` `@Setter` `@NonNull` 等)来减少代码量。在编码过程中优先使用 lombok 插件是一个很好的习惯。
+
+2. 如果你需要在类中使用 log4j 打印日志, 优先使用 `lombok` 中的 `@Slf4j` 注解。
+
+3. SeaTunnel 使用 Github issue 来跟踪代码问题,包括 bugs 和 改进, 并且使用 Github pull request 来管理代码的审查和合并。所以创建一个清晰的 issue 或者 pull request 能让社区更好的理解开发者的意图,最佳实践如下:
+
+ > [目的] [模块名称] [子模块名称] 描述
+
+ 1. Pull request 目的包含: `Hotfix`, `Feature`, `Improve`, `Docs`, `WIP`。 请注意如果选择 `WIP`, 你需要使用 github 的 draft pull request。
+ 2. Issue 目的包含: `Feature`, `Bug`, `Docs`, `Discuss`。
+ 3. 模块名称: 当前 pull request 或 issue 所涉及的模块名称, 例如: `Core`, `Connector-V2`, `Connector-V1`等。
+ 4. 子模块名称: 当前 pull request 或 issue 所涉及的子模块名称, 例如:`File` `Redis` `Hbase`等。
+ 5. 描述: 高度概括下当前 pull request 和 issue 要做的事情,尽量见名知意。
+
+ 提示:**更多内容, 可以参考 [Issue Guide](https://seatunnel.apache.org/community/contribution_guide/contribute#issue) 和 [Pull Request Guide](https://seatunnel.apache.org/community/contribution_guide/contribute#pull-request)**
+
+4. 代码片段不要重复。 如果一段代码被使用多次,定义多次不是好的选择,最佳实践是把它公共独立出来让其他模块使用。
+
+5. 当抛出一个异常时, 需要一起带上提示信息并且使异常的范围尽可能地小。抛出过于广泛的异常会让错误处理变得复杂并且容易包含安全问题。例如,如果你的 connector 在读数据的时候遇到 `IOException`, 合理的做法如下:
+
+ ```java
+ try {
+ // read logic
+ } catch (IOException e) {
+ throw SeaTunnelORCFormatException("This orc file is corrupted, please check it", e);
+ }
+ ```
+
+6. Apache 项目的 license 要求很严格, 每个 Apache 项目文件都应该包含一个 license 声明。 在提交 pull request 之前请检查每个新文件都包含 `Apache License Header`。
+
+ ```java
+ /*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ ```
+
+7. Apache SeaTunnel 使用 `Spotless` 管理代码风格和格式检查。你可以使用下面的命令来自动修复代码风格问题和格式。
+
+ ```shell
+ ./mvnw spotless:apply
+ ```
+
+8. 提交 pull request 之前,确保修改后项目编译正常,使用下面命令打包整个项目:
+
+ ```shell
+ # 多线程编译
+ ./mvnw -T 1C clean package
+ ```
+
+ ```shell
+ # 单线程编译
+ ./mvnw clean package
+ ```
+
+9. 提交 pull request 之前,在本地用完整的单元测试和集成测试来检查你的功能性是否正确,最佳实践是用 `seatunnel-examples` 模块的例子去检查多引擎是否正确运行并且结果正确。
+
+10. 如果提交的 pull request 是一个新的特性, 请记得更新文档。
+
+11. 提交 connector 相关的 pull request, 可以通过写 e2e 测试保证鲁棒性,e2e 测试需要包含所有的数据类型,并且初始化尽可能小的 docker 镜像,sink 和 source 的测试用例可以写在一起减少资源的损耗。 可以参考这个不错的例子: [MongodbIT.java](https://github.com/apache/seatunnel/blob/dev/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-mongodb-e2e/src/test/java/org/apache/seatunnel/e2e/connector/v2/mongodb/MongodbIT.java)
+
+12. 类中默认的权限需要使用 `private`, 不可修改的需要设置 `final`, 特殊场景除外。
+
+13. 类中的属性和方法参数倾向于使用基本数据类型(int boolean double float...), 而不是包装类型(Integer Boolean Double Float...), 特殊情况除外。
+
+14. 开发一个 sink connector 的时候你需要知道 sink 需要被序列化,如果有不能被序列化的属性, 需要包装到一个类中,并且使用单例模式。
+
+15. 如果代码中有多个 `if` 流程判断, 尽量简化为多个 if 而不是 if-else-if。
+
+16. Pull request 具有单一职责的特点, 不允许在 pull request 包含与该功能无关的代码, 如果有这种情况, 需要在提交 pull request 之前单独处理好, 否则 Apache SeaTunnel 社区会主动关闭 pull request。
+
+17. 贡献者需要对自己的 pull request 负责。 如果 pull request 包含新的特性, 或者修改了老的特性,增加测试用例或者 e2e 用例来证明合理性和保护完整性是一个很好的做法。
+
+18. 如果你认为社区当前某部分代码不合理(尤其是核心的 `core` 和 `api` 模块),有函数需要更新修改,优先使用 `discuss issue` 和 `email` 与社区讨论是否有必要修改,社区同意后再提交 pull request, 请不要不经讨论直接提交 pull request, 社区会认为无效并且关闭。
+
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/contribution/contribute-plugin.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/contribution/contribute-plugin.md
new file mode 100644
index 000000000000..514355840d03
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/contribution/contribute-plugin.md
@@ -0,0 +1,5 @@
+# 贡献 Connector-v2 插件
+
+如果你想要贡献 Connector-V2, 可以参考下面的 Connector-V2 贡献指南。 可以帮你快速进入开发。
+
+[Connector-v2 贡献指南](https://github.com/apache/seatunnel/blob/dev/seatunnel-connectors-v2/README.md)
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/contribution/contribute-transform-v2-guide.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/contribution/contribute-transform-v2-guide.md
new file mode 100644
index 000000000000..ad02b9e977c1
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/contribution/contribute-transform-v2-guide.md
@@ -0,0 +1,321 @@
+# 贡献 Transform 指南
+
+本文描述了如何理解、开发和贡献一个 transform。
+
+我们也提供了 [Transform E2E Test](../../../seatunnel-e2e/seatunnel-transforms-v2-e2e)
+来验证 transform 的数据输入和输出。
+
+## 概念
+
+在 SeaTunnel 中你可以通过 connector 读写数据, 但如果你需要在读取数据后或者写入数据前处理数据, 你需要使用 transform。
+
+使用 transform 可以简单修改数据行和字段, 例如拆分字段、修改字段的值或者删除字段。
+
+### 类型转换
+
+Transform 从上游(source 或者 transform)获取类型输入,然后给下游(sink 或者 transform)输出新的类型,这个过程就是类型转换。
+
+案例 1:删除字段
+
+```shell
+| A | B | C |
+|-----------|-----------|-----------|
+| STRING | INT | BOOLEAN |
+
+| A | B |
+|-----------|-----------|
+| STRING | INT |
+```
+
+案例 2:字段排序
+
+```shell
+| B | C | A |
+|-----------|-----------|-----------|
+| INT | BOOLEAN | STRING |
+
+| A | B | C |
+|-----------|-----------|-----------|
+| STRING | INT | BOOLEAN |
+```
+
+案例 3:修改字段类型
+
+```shell
+| A | B | C |
+|-----------|-----------|-----------|
+| STRING | INT | BOOLEAN |
+
+
+| A | B | C |
+|-----------|-----------|-----------|
+| STRING | STRING | STRING |
+```
+
+案例 4:添加新的字段
+
+```shell
+| A | B | C |
+|-----------|-----------|-----------|
+| STRING | INT | BOOLEAN |
+
+
+| A | B | C | D |
+|-----------|-----------|-----------|-----------|
+| STRING | INT | BOOLEAN | DOUBLE |
+```
+
+### 数据转换
+
+转换类型后,Transform 会从上游(source 或者 transform)获取数据行, 使用[新的数据类型](#类型转换)编辑数据后输出到下游(sink 或者 transform)。这个过程叫数据转换。
+
+### 翻译
+
+Transform 已经从 execution engine 中解耦, 任何 transform 实现可以不需要修改和配置的适用所有引擎, 这就需要翻译层来做 transform 和 execution engine 的适配。
+
+案例:翻译数据类型和数据
+
+```shell
+原始数据:
+
+| A | B | C |
+|-----------|-----------|-----------|
+| STRING | INT | BOOLEAN |
+
+类型转换:
+
+| A | B | C |
+|-------------------|-------------------|-------------------|
+| ENGINE | ENGINE | ENGINE |
+
+数据转换:
+
+| A | B | C |
+|-------------------|-------------------|-------------------|
+| ENGINE<"test"> | ENGINE<1> | ENGINE |
+```
+
+## 核心 APIs
+
+### SeaTunnelTransform
+
+`SeaTunnelTransform` 提供了所有主要的 API, 你可以继承它实现任何转换。
+
+1. 从上游获取数据类型。
+
+```java
+/**
+ * Set the data type info of input data.
+ *
+ * @param inputDataType The data type info of upstream input.
+ */
+ void setTypeInfo(SeaTunnelDataType inputDataType);
+```
+
+2. 输出新的数据类型给下游。
+
+```java
+/**
+ * Get the data type of the records produced by this transform.
+ *
+ * @return Produced data type.
+ */
+SeaTunnelDataType getProducedType();
+```
+
+3. 修改输入数据并且输出新的数据到下游。
+
+```java
+/**
+ * Transform input data to {@link this#getProducedType()} types data.
+ *
+ * @param row the data need be transform.
+ * @return transformed data.
+ */
+T map(T row);
+```
+
+### SingleFieldOutputTransform
+
+`SingleFieldOutputTransform` 抽象了一个单字段修改操作
+
+1. 定义输出字段
+
+```java
+/**
+ * Outputs new field
+ *
+ * @return
+ */
+protected abstract String getOutputFieldName();
+```
+
+2. 定义输出字段类型
+
+```java
+/**
+ * Outputs new field datatype
+ *
+ * @return
+ */
+protected abstract SeaTunnelDataType getOutputFieldDataType();
+```
+
+3. 定义输出字段值
+
+```java
+/**
+ * Outputs new field value
+ *
+ * @param inputRow The inputRow of upstream input.
+ * @return
+ */
+protected abstract Object getOutputFieldValue(SeaTunnelRowAccessor inputRow);
+```
+
+### MultipleFieldOutputTransform
+
+`MultipleFieldOutputTransform` 抽象了多字段修改操作
+
+1. 定义多个输出的字段
+
+```java
+/**
+ * Outputs new fields
+ *
+ * @return
+ */
+protected abstract String[] getOutputFieldNames();
+```
+
+2. 定义输出字段的类型
+
+```java
+/**
+ * Outputs new fields datatype
+ *
+ * @return
+ */
+protected abstract SeaTunnelDataType[] getOutputFieldDataTypes();
+```
+
+3. 定义输出字段的值
+
+```java
+/**
+ * Outputs new fields value
+ *
+ * @param inputRow The inputRow of upstream input.
+ * @return
+ */
+protected abstract Object[] getOutputFieldValues(SeaTunnelRowAccessor inputRow);
+```
+
+### AbstractSeaTunnelTransform
+
+`AbstractSeaTunnelTransform` 抽象了数据类型和字段的修改操作
+
+1. 转换输入的行类型到新的行类型
+
+```java
+/**
+ * Outputs transformed row type.
+ *
+ * @param inputRowType upstream input row type
+ * @return
+ */
+protected abstract SeaTunnelRowType transformRowType(SeaTunnelRowType inputRowType);
+```
+
+2. 转换输入的行数据到新的行数据
+
+```java
+/**
+ * Outputs transformed row data.
+ *
+ * @param inputRow upstream input row data
+ * @return
+ */
+protected abstract SeaTunnelRow transformRow(SeaTunnelRow inputRow);
+```
+
+## 开发一个 Transform
+
+Transform 必须实现下面其中一个 API:
+- SeaTunnelTransform
+- AbstractSeaTunnelTransform
+- SingleFieldOutputTransform
+- MultipleFieldOutputTransform
+
+将实现类放入模块 `seatunnel-transforms-v2`。
+
+### 案例: 拷贝字段到一个新的字段
+
+```java
+@AutoService(SeaTunnelTransform.class)
+public class CopyFieldTransform extends SingleFieldOutputTransform {
+
+ private String srcField;
+ private int srcFieldIndex;
+ private SeaTunnelDataType srcFieldDataType;
+ private String destField;
+
+ @Override
+ public String getPluginName() {
+ return "Copy";
+ }
+
+ @Override
+ protected void setConfig(Config pluginConfig) {
+ this.srcField = pluginConfig.getString("src_field");
+ this.destField = pluginConfig.getString("dest_fields");
+ }
+
+ @Override
+ protected void setInputRowType(SeaTunnelRowType inputRowType) {
+ srcFieldIndex = inputRowType.indexOf(srcField);
+ srcFieldDataType = inputRowType.getFieldType(srcFieldIndex);
+ }
+
+ @Override
+ protected String getOutputFieldName() {
+ return destField;
+ }
+
+ @Override
+ protected SeaTunnelDataType getOutputFieldDataType() {
+ return srcFieldDataType;
+ }
+
+ @Override
+ protected Object getOutputFieldValue(SeaTunnelRowAccessor inputRow) {
+ return inputRow.getField(srcFieldIndex);
+ }
+}
+```
+
+1. `getPluginName` 方法用来定义 transform 的名字。
+2. @AutoService 注解用来自动生成 `META-INF/services/org.apache.seatunnel.api.transform.SeaTunnelTransform` 文件
+3. `setConfig` 方法用来注入用户配置。
+
+## Transform 测试工具
+
+当你添加了一个新的插件, 推荐添加一个 e2e 测试用例来测试。
+我们有 `seatunnel-e2e/seatunnel-transforms-v2-e2e` 来帮助你实现。
+
+例如, 如果你想要添加一个 `CopyFieldTransform` 的测试用例, 你可以在 `seatunnel-e2e/seatunnel-transforms-v2-e2e`
+模块中添加一个新的测试用例, 并且在用例中继承 `TestSuiteBase` 类。
+
+```java
+public class TestCopyFieldTransformIT extends TestSuiteBase {
+
+ @TestTemplate
+ public void testCopyFieldTransform(TestContainer container) {
+ Container.ExecResult execResult = container.executeJob("/copy_transform.conf");
+ Assertions.assertEquals(0, execResult.getExitCode());
+ }
+}
+```
+
+一旦你的测试用例实现了 `TestSuiteBase` 接口, 并且添加 `@TestTemplate` 注解,它会在所有引擎运行作业,你只需要用你自己的 SeaTunnel 配置文件执行 executeJob 方法,
+它会提交 SeaTunnel 作业。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/contribution/how-to-create-your-connector.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/contribution/how-to-create-your-connector.md
new file mode 100644
index 000000000000..3aef1b140c27
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/contribution/how-to-create-your-connector.md
@@ -0,0 +1,4 @@
+## 开发自己的Connector
+
+如果你想针对SeaTunnel新的连接器API开发自己的连接器(Connector V2),请查看[这里](https://github.com/apache/seatunnel/blob/dev/seatunnel-connectors-v2/README.zh.md) 。
+
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/contribution/new-license.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/contribution/new-license.md
new file mode 100644
index 000000000000..d39019f25b7c
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/contribution/new-license.md
@@ -0,0 +1,53 @@
+# 如何添加新的 License
+
+### ASF 第三方许可政策
+
+如果您打算向SeaTunnel(或其他Apache项目)添加新功能,并且该功能涉及到其他开源软件引用的时候,请注意目前 Apache 项目支持遵从以下协议的开源软件。
+
+[ASF 第三方许可政策](https://apache.org/legal/resolved.html)
+
+如果您所使用的第三方软件并不在以上协议之中,那么很抱歉,您的代码将无法通过审核,建议您找寻其他替代方案。
+
+### 如何在 SeaTunnel 中合法使用第三方开源软件
+
+当我们想要引入一个新的第三方软件(包含但不限于第三方的 jar、文本、CSS、js、图片、图标、音视频等及在第三方基础上做的修改)至我们的项目中的时候,除了他们所遵从的协议是 Apache 允许的,另外一点很重要,就是合法的使用。您可以参考以下文章
+
+* [COMMUNITY-LED DEVELOPMENT "THE APACHE WAY"](https://apache.org/dev/licensing-howto.html)
+
+举个例子,当我们使用了 ZooKeeper,那么我们项目就必须包含 ZooKeeper 的 NOTICE 文件(每个开源项目都会有 NOTICE 文件,一般位于根目录),用Apache的话来讲,就是 "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work.
+
+关于具体的各个开源协议使用协议,在此不做过多篇幅一一介绍,有兴趣可以自行查询了解。
+
+### SeaTunnel-License 检测规则
+
+通常情况下, 我们会为项目添加 License-check 脚本。 跟其他开源项目略有不同,SeaTunnel 使用 [SkyWalking](https://github.com/apache/skywalking) 提供的 SeaTunnel-License-Check。 总之,我们试图第一时间避免 License 问题。
+
+当我们需要添加新的 jar 包或者使用外部资源时, 我们需要按照以下步骤进行操作:
+
+* 在 known-dependencies.txt 文件中添加 jar 的名称和版本
+* 在 'seatunnel-dist/release-docs/LICENSE' 目录下添加相关 maven 仓库地址
+* 在 'seatunnel-dist/release-docs/NOTICE' 目录下添加相关的 NOTICE 文件, 并确保他们跟原来的仓库中的文件没有区别
+* 在 'seatunnel-dist/release-docs/licenses' 目录下添加相关源码协议文件, 并且文件命令遵守 license-filename.txt 规则。 例:license-zk.txt
+* 检查依赖的 license 是否出错
+
+```
+--- /dev/fd/63 2020-12-03 03:08:57.191579482 +0000
++++ /dev/fd/62 2020-12-03 03:08:57.191579482 +0000
+@@ -1,0 +2 @@
++HikariCP-java6-2.3.13.jar
+@@ -16,0 +18 @@
++c3p0-0.9.5.2.jar
+@@ -149,0 +152 @@
++mchange-commons-java-0.2.11.jar
+
+- commons-lang-2.1.3.jar
+Error: Process completed with exit code 1.
+```
+
+一般来说,添加一个 jar 的工作通常不是很容易,因为 jar 通常依赖其他各种 jar, 我们还需要为这些 jar 添加相应的许可证。 在这种情况下, 我们会收到检查 license 失败的错误信息。像上面的例子,我们缺少 `HikariCP-java6-2.3.13`, `c3p0` 等的 license 声明(`+` 表示新添加,`-` 表示需要删除), 按照步骤添加 jar。
+
+### 参考
+
+* [COMMUNITY-LED DEVELOPMENT "THE APACHE WAY"](https://apache.org/dev/licensing-howto.html)
+* [ASF 第三方许可政策](https://apache.org/legal/resolved.html)
+
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/contribution/setup.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/contribution/setup.md
new file mode 100644
index 000000000000..c00c3132c226
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/contribution/setup.md
@@ -0,0 +1,121 @@
+# 搭建开发环境
+
+在这个章节, 我们会向你展示如何搭建 SeaTunnel 的开发环境, 然后用 JetBrains IntelliJ IDEA 跑一个简单的示例。
+
+> 你可以用任何你喜欢的开发环境进行开发和测试,我们只是用 [JetBrains IDEA](https://www.jetbrains.com/idea/)
+> 作为示例来展示如何一步步完成设置。
+
+## 准备
+
+在设置开发环境之前, 需要做一些准备工作, 确保你安装了以下软件:
+
+* 安装 [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git)。
+* 安装 [Java](https://www.java.com/en/download/) (目前只支持 JDK8/JDK11) 并且设置 `JAVA_HOME` 环境变量。
+* 安装 [Scala](https://www.scala-lang.org/download/2.11.12.html) (目前只支持 scala 2.11.12)。
+* 安装 [JetBrains IDEA](https://www.jetbrains.com/idea/)。
+
+## 设置
+
+### 克隆源码
+
+首先使用以下命令从 [GitHub](https://github.com/apache/seatunnel) 克隆 SeaTunnel 源代码。
+
+```shell
+git clone git@github.com:apache/seatunnel.git
+```
+
+### 本地安装子项目
+
+在克隆好源代码以后, 运行 `./mvnw` 命令安装子项目到 maven 本地仓库目录。 否则你的代码无法在 IDEA 中正常启动。
+
+```shell
+./mvnw install -Dmaven.test.skip
+```
+
+### 源码编译
+
+在安装 maven 以后, 可以使用下面命令进行编译和打包。
+
+```
+mvn clean package -pl seatunnel-dist -am -Dmaven.test.skip=true
+```
+
+### 编译子模块
+
+如果要单独编译子模块, 可以使用下面的命令进行编译和打包。
+
+```ssh
+# 这是一个单独构建 redis connector 的示例
+
+ mvn clean package -pl seatunnel-connectors-v2/connector-redis -am -DskipTests -T 1C
+```
+
+### 安装 JetBrains IDEA Scala 插件
+
+用 JetBrains IntelliJ IDEA 打开你的源码,如果有 Scala 的代码,则需要安装 JetBrains IntelliJ IDEA's [Scala plugin](https://plugins.jetbrains.com/plugin/1347-scala)。
+可以参考 [install plugins for IDEA](https://www.jetbrains.com/help/idea/managing-plugins.html#install-plugins) 。
+
+### 安装 JetBrains IDEA Lombok 插件
+
+在运行示例之前, 安装 JetBrains IntelliJ IDEA 的 [Lombok plugin](https://plugins.jetbrains.com/plugin/6317-lombok)。
+可以参考 [install plugins for IDEA](https://www.jetbrains.com/help/idea/managing-plugins.html#install-plugins) 。
+
+### 代码风格
+
+Apache SeaTunnel 使用 `Spotless` 来统一代码风格和格式检查。可以运行下面 `Spotless` 命令自动格式化。
+
+```shell
+./mvnw spotless:apply
+```
+
+拷贝 `pre-commit hook` 文件 `/tools/spotless_check/pre-commit.sh` 到你项目的 `.git/hooks/` 目录, 这样每次你使用 `git commit` 提交代码的时候会自动调用 `Spotless` 修复格式问题。
+
+## 运行一个简单的示例
+
+完成上面所有的工作后,环境搭建已经完成, 可以直接运行我们的示例了。 所有的示例在 `seatunnel-examples` 模块里, 你可以随意选择进行编译和调试,参考 [running or debugging
+it in IDEA](https://www.jetbrains.com/help/idea/run-debug-configuration.html)。
+
+我们使用 `seatunnel-examples/seatunnel-engine-examples/src/main/java/org/apache/seatunnel/example/engine/SeaTunnelEngineExample.java`
+作为示例, 运行成功后的输出如下:
+
+```log
+2024-08-10 11:45:32,839 INFO org.apache.seatunnel.core.starter.seatunnel.command.ClientExecuteCommand -
+***********************************************
+ Job Statistic Information
+***********************************************
+Start Time : 2024-08-10 11:45:30
+End Time : 2024-08-10 11:45:32
+Total Time(s) : 2
+Total Read Count : 5
+Total Write Count : 5
+Total Failed Count : 0
+***********************************************
+```
+
+## 更多信息
+
+所有的实例都用了简单的 source 和 sink, 这样可以使得运行更独立和更简单。
+你可以修改 `resources/examples` 中的示例的配置。 例如下面的配置使用 PostgreSQL 作为源,并且输出到控制台。
+请注意引用FakeSource 和 Console 以外的连接器时,需要修改seatunnel-example对应子模块下的`pom.xml`文件中的依赖。
+
+```conf
+env {
+ parallelism = 1
+ job.mode = "BATCH"
+}
+source {
+ Jdbc {
+ driver = org.postgresql.Driver
+ url = "jdbc:postgresql://host:port/database"
+ username = postgres
+ password = "123456"
+ query = "select * from test"
+ table_path = "database.test"
+ }
+}
+
+sink {
+ Console {}
+}
+```
+
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/faq.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/faq.md
new file mode 100644
index 000000000000..505cc97fd6d9
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/faq.md
@@ -0,0 +1,354 @@
+# 常见问题解答
+
+## 为什么要安装Spark或者Flink这样的计算引擎?
+
+SeaTunnel现在使用Spark、Flink等计算引擎来完成资源调度和节点通信,因此我们可以专注于数据同步的易用性和高性能组件的开发。 但这只是暂时的。
+
+## 我有一个问题,我自己无法解决
+
+我在使用SeaTunnel时遇到了问题,无法自行解决。 我应该怎么办? 首先,在[问题列表](https://github.com/apache/seatunnel/issues)或[邮件列表](https://lists.apache.org/list.html?dev@seatunnel.apache.org)中搜索 )看看是否有人已经问过同样的问题并得到答案。 如果您找不到问题的答案,您可以通过[这些方式](https://github.com/apache/seatunnel#contact-us)联系社区成员寻求帮助。
+
+## 如何声明变量?
+
+您想知道如何在 SeaTunnel 的配置中声明一个变量,然后在运行时动态替换该变量的值吗?
+
+从“v1.2.4”开始,SeaTunnel 支持配置中的变量替换。 该功能常用于定时或非定时离线处理,以替代时间、日期等变量。 用法如下:
+
+在配置中配置变量名称。 下面是一个sql转换的例子(实际上,配置文件中任何地方“key = value”中的值都可以使用变量替换):
+
+```
+...
+transform {
+ sql {
+ query = "select * from user_view where city ='"${city}"' and dt = '"${date}"'"
+ }
+}
+...
+```
+
+以Spark Local模式为例,启动命令如下:
+
+```bash
+./bin/start-seatunnel-spark.sh \
+-c ./config/your_app.conf \
+-e client \
+-m local[2] \
+-i city=shanghai \
+-i date=20190319
+```
+
+您可以使用参数“-i”或“--variable”后跟“key=value”来指定变量的值,其中key需要与配置中的变量名称相同。
+
+## 如何在配置文件中写入多行文本的配置项?
+
+当配置的文本很长并且想要将其换行时,可以使用三个双引号来指示其开始和结束:
+
+```
+var = """
+ whatever you want
+"""
+```
+
+## 如何实现多行文本的变量替换?
+
+在多行文本中进行变量替换有点麻烦,因为变量不能包含在三个双引号中:
+
+```
+var = """
+your string 1
+"""${you_var}""" your string 2"""
+```
+
+请参阅:[lightbend/config#456](https://github.com/lightbend/config/issues/456)。
+
+## Azkaban、Oozie、DolphinScheduler 是否支持 SeaTunnel?
+
+当然! 请参阅下面的屏幕截图:
+
+![工作流程.png](/image_zh/workflow.png)
+
+![azkaban.png](/image_zh/azkaban.png)
+
+## SeaTunnel是否有配置多个源的情况,例如同时在源中配置elasticsearch和hdfs?
+
+```
+env {
+ ...
+}
+
+source {
+ hdfs { ... }
+ elasticsearch { ... }
+ jdbc {...}
+}
+
+transform {
+ ...
+}
+
+sink {
+ elasticsearch { ... }
+}
+```
+
+## 有 HBase 插件吗?
+
+有一个 HBase 输入插件。 您可以从这里下载:https://github.com/garyelephant/waterdrop-input-hbase
+
+## 如何使用SeaTunnel将数据写入Hive?
+
+```
+env {
+ spark.sql.catalogImplementation = "hive"
+ spark.hadoop.hive.exec.dynamic.partition = "true"
+ spark.hadoop.hive.exec.dynamic.partition.mode = "nonstrict"
+}
+
+source {
+ sql = "insert into ..."
+}
+
+sink {
+ // The data has been written to hive through the sql source. This is just a placeholder, it does not actually work.
+ stdout {
+ limit = 1
+ }
+}
+```
+
+此外,SeaTunnel 在 `1.5.7` 版本之后在 `1.x` 分支中实现了 `Hive` 输出插件; 在“2.x”分支中。 Spark 引擎的 Hive 插件已从版本“2.0.5”开始支持:https://github.com/apache/seatunnel/issues/910。
+
+## SeaTunnel如何编写ClickHouse的多个实例来实现负载均衡?
+
+1.直接写分布式表(不推荐)
+
+2.在ClickHouse的多个实例前面添加代理或域名(DNS):
+
+```
+{
+ output {
+ clickhouse {
+ host = "ck-proxy.xx.xx:8123"
+ # Local table
+ table = "table_name"
+ }
+ }
+}
+```
+
+3. 在配置文件中配置多个ClickHouse实例:
+
+ ```
+ {
+ output {
+ clickhouse {
+ host = "ck1:8123,ck2:8123,ck3:8123"
+ # Local table
+ table = "table_name"
+ }
+ }
+ }
+ ```
+4. 使用集群模式:
+
+ ```
+ {
+ output {
+ clickhouse {
+ # Configure only one host
+ host = "ck1:8123"
+ cluster = "clickhouse_cluster_name"
+ # Local table
+ table = "table_name"
+ }
+ }
+ }
+ ```
+
+## SeaTunnel 消费 Kafka 时如何解决 OOM?
+
+大多数情况下,OOM是由于没有对消费进行速率限制而导致的。 解决方法如下:
+
+对于目前Kafka的Spark消费限制:
+
+1. 假设您使用 KafkaStream 消费的 Kafka `Topic 1` 的分区数量 = N。
+
+2. 假设“Topic 1”的消息生产者(Producer)的生产速度为K条消息/秒,则向分区写入消息的速度必须一致。
+
+3、假设经过测试发现Spark Executor每核每秒的处理能力为M。
+
+可以得出以下结论:
+
+1、如果想让Spark对`Topic 1`的消耗跟上它的生产速度,那么需要 `spark.executor.cores` * `spark.executor.instances` >= K / M
+
+2、当出现数据延迟时,如果希望消耗速度不要太快,导致spark执行器OOM,那么需要配置 `spark.streaming.kafka.maxRatePerPartition` <= (`spark.executor.cores` * `spark.executor.instances`) * M / N
+
+3、一般来说,M和N都确定了,从2可以得出结论:`spark.streaming.kafka.maxRatePerPartition`的大小与`spark.executor.cores` * `spark的大小正相关 .executor.instances`,可以在增加资源`maxRatePerPartition`的同时增加,以加快消耗。
+
+![Kafka](/image_zh/kafka.png)
+
+## 如何解决错误 `Exception in thread "main" java.lang.NoSuchFieldError: INSTANCE`?
+
+原因是Spark的CDH版本自带的httpclient.jar版本较低,而ClickHouse JDBC基于的httpclient版本是4.5.2,包版本冲突。 解决办法是将CDH自带的jar包替换为httpclient-4.5.2版本。
+
+## 我的Spark集群默认的JDK是JDK7。 安装JDK8后,如何指定SeaTunnel以JDK8启动?
+
+在 SeaTunnel 的配置文件中,指定以下配置:
+
+```shell
+spark {
+ ...
+ spark.executorEnv.JAVA_HOME="/your/java_8_home/directory"
+ spark.yarn.appMasterEnv.JAVA_HOME="/your/java_8_home/directory"
+ ...
+}
+```
+
+## 如何为 YARN 上的 SeaTunnel 指定不同的 JDK 版本?
+
+例如要设置JDK版本为JDK8,有两种情况:
+
+- YARN集群已部署JDK8,但默认JDK不是JDK8。 在 SeaTunnel 配置文件中添加两个配置:
+
+ ```
+ env {
+ ...
+ spark.executorEnv.JAVA_HOME="/your/java_8_home/directory"
+ spark.yarn.appMasterEnv.JAVA_HOME="/your/java_8_home/directory"
+ ...
+ }
+ ```
+- YARN集群未部署JDK8。 此时,启动附带JDK8的SeaTunnel。 详细操作参见:
+ https://www.cnblogs.com/jasondan/p/spark-specific-jdk-version.html
+
+## Spark local[*]模式运行SeaTunnel时总是出现OOM怎么办?
+
+如果以本地模式运行,则需要修改`start-seatunnel.sh`启动脚本。 在 `spark-submit` 之后添加参数 `--driver-memory 4g` 。 一般情况下,生产环境中不使用本地模式。 因此,On YARN时一般不需要设置该参数。 有关详细信息,请参阅:[应用程序属性](https://spark.apache.org/docs/latest/configuration.html#application-properties)。
+
+## 我可以在哪里放置自己编写的插件或第三方 jdbc.jar 以供 SeaTunnel 加载?
+
+将Jar包放置在plugins目录指定结构下:
+
+```bash
+cd SeaTunnel
+mkdir -p plugins/my_plugins/lib
+cp third-part.jar plugins/my_plugins/lib
+```
+
+`my_plugins` 可以是任何字符串。
+
+## 如何在 SeaTunnel-V1(Spark) 中配置日志记录相关参数?
+
+可以通过三种方式配置日志相关参数(例如日志级别):
+
+- [不推荐] 更改默认的`$SPARK_HOME/conf/log4j.properties`。
+ - 这将影响通过 `$SPARK_HOME/bin/spark-submit` 提交的所有程序。
+- [不推荐]直接在SeaTunnel的Spark代码中修改日志相关参数。
+ - 这相当于写死了,每次改变都需要重新编译。
+- [推荐] 使用以下方法更改 SeaTunnel 配置文件中的日志记录配置(更改仅在 SeaTunnel >= 1.5.5 时生效):
+
+ ```
+ env {
+ spark.driver.extraJavaOptions = "-Dlog4j.configuration=file:/log4j.properties"
+ spark.executor.extraJavaOptions = "-Dlog4j.configuration=file:/log4j.properties"
+ }
+ source {
+ ...
+ }
+ transform {
+ ...
+ }
+ sink {
+ ...
+ }
+ ```
+
+可供参考的log4j配置文件内容如下:
+
+```
+$ cat log4j.properties
+log4j.rootLogger=ERROR, console
+
+# set the log level for these components
+log4j.logger.org=ERROR
+log4j.logger.org.apache.spark=ERROR
+log4j.logger.org.spark-project=ERROR
+log4j.logger.org.apache.hadoop=ERROR
+log4j.logger.io.netty=ERROR
+log4j.logger.org.apache.zookeeper=ERROR
+
+# add a ConsoleAppender to the logger stdout to write to the console
+log4j.appender.console=org.apache.log4j.ConsoleAppender
+log4j.appender.console.layout=org.apache.log4j.PatternLayout
+# use a simple message format
+log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
+```
+
+## 如何在 SeaTunnel-V2(Spark、Flink) 中配置日志记录相关参数?
+
+目前,无法直接设置它们。 您需要修改SeaTunnel启动脚本。 相关参数在任务提交命令中指定。 具体参数请参考官方文档:
+
+- Spark官方文档:http://spark.apache.org/docs/latest/configuration.html#configuring-logging
+- Flink 官方文档:https://ci.apache.org/projects/flink/flink-docs-stable/monitoring/logging.html
+
+参考:
+
+https://stackoverflow.com/questions/27781187/how-to-stop-info-messages-displaying-on-spark-console
+
+http://spark.apache.org/docs/latest/configuration.html#configuring-logging
+
+https://medium.com/@iacomini.riccardo/spark-logging-configuration-in-yarn-faf5ba5fdb01
+
+## 如何配置SeaTunnel-E2E Test的日志记录相关参数?
+
+`seatunnel-e2e` 的 log4j 配置文件位于 `seatunnel-e2e/seatunnel-e2e-common/src/test/resources/log4j2.properties` 中。 您可以直接在配置文件中修改日志记录相关参数。
+
+例如,如果您想输出更详细的E2E Test日志,只需将配置文件中的“rootLogger.level”降级即可。
+
+## 写入 ClickHouse 时出错:ClassCastException
+
+在SeaTunnel中,不会主动转换数据类型。 Input读取数据后,对应的
+架构。 编写ClickHouse时,需要严格匹配字段类型,不匹配的情况需要解决。
+
+数据转换可以通过以下两个插件实现:
+
+1.过滤器转换插件
+2.过滤Sql插件
+
+详细数据类型转换参考:[ClickHouse数据类型检查列表](https://interestinglab.github.io/seatunnel-docs/#/en/configuration/output-plugins/Clickhouse?id=clickhouse-data-type-check-list)
+
+请参阅问题:[#488](https://github.com/apache/seatunnel/issues/488)[#382](https://github.com/apache/seatunnel/issues/382)。
+
+## SeaTunnel 如何访问经过 kerberos 验证的 HDFS、YARN、Hive 等资源?
+
+请参考:[#590](https://github.com/apache/seatunnel/issues/590)。
+
+## 如何排查 NoClassDefFoundError、ClassNotFoundException 等问题?
+
+有很大概率是Java类路径中加载了多个不同版本的对应Jar包类,是因为加载顺序冲突,而不是因为Jar确实丢失了。 修改这条SeaTunnel启动命令,在spark-submit提交部分添加如下参数,通过输出日志进行详细调试。
+
+```
+spark-submit --verbose
+ ...
+ --conf 'spark.driver.extraJavaOptions=-verbose:class'
+ --conf 'spark.executor.extraJavaOptions=-verbose:class'
+ ...
+```
+
+## 如何使用SeaTunnel跨HDFS集群同步数据?
+
+只需正确配置 hdfs-site.xml 即可。 参考:https://www.cnblogs.com/suanec/p/7828139.html。
+
+## 我想学习SeaTunnel的源代码。 我应该从哪里开始?
+
+SeaTunnel 拥有完全抽象、结构化的代码实现,很多人都选择 SeaTunnel 作为学习 Spark 的方式。 您可以从主程序入口了解源代码:SeaTunnel.java
+
+## SeaTunnel开发者开发自己的插件时,是否需要了解SeaTunnel代码? 这些插件是否应该集成到 SeaTunnel 项目中?
+
+开发者开发的插件与SeaTunnel项目无关,不需要包含您的插件代码。
+
+该插件可以完全独立于 SeaTunnel 项目,因此您可以使用 Java、Scala、Maven、sbt、Gradle 或任何您想要的方式编写它。 这也是我们推荐开发者开发插件的方式。
+
+## 当我导入项目时,编译器出现异常“找不到类`org.apache.seatunnel.shade.com.typesafe.config.Config`”
+
+首先运行“mvn install”。 在 `seatunnel-config/seatunnel-config-base` 子项目中,包 `com.typesafe.config` 已重新定位到 `org.apache.seatunnel.shade.com.typesafe.config` 并安装到 maven 本地存储库 在子项目 `seatunnel-config/seatunnel-config-shade` 中。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/other-engine/flink.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/other-engine/flink.md
new file mode 100644
index 000000000000..856aeb78101e
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/other-engine/flink.md
@@ -0,0 +1,83 @@
+# Flink引擎方式运行SeaTunnel
+
+Flink是一个强大的高性能分布式流处理引擎。你可以搜索 `Apache Flink`获取更多关于它的信息。
+
+### 在Job中设置Flink的配置信息
+
+以 `flink.` 开始:
+
+例子: 我对这个项目设置一个精确的检查点
+
+```
+env {
+ parallelism = 1
+ flink.execution.checkpointing.unaligned.enabled=true
+}
+```
+
+枚举类型当前还不支持,你需要在Flink的配置文件中指定它们。暂时只有这些类型的设置受支持:
+Integer/Boolean/String/Duration
+
+### 如何设置一个简单的Flink Job
+
+这是一个运行在Flink中随机生成数据打印到控制台的简单job
+
+```
+env {
+ # 公共参数
+ parallelism = 1
+ checkpoint.interval = 5000
+
+ # flink特殊参数
+ flink.execution.checkpointing.mode = "EXACTLY_ONCE"
+ flink.execution.checkpointing.timeout = 600000
+}
+
+source {
+ FakeSource {
+ row.num = 16
+ result_table_name = "fake_table"
+ schema = {
+ fields {
+ c_map = "map"
+ c_array = "array"
+ c_string = string
+ c_boolean = boolean
+ c_int = int
+ c_bigint = bigint
+ c_double = double
+ c_bytes = bytes
+ c_date = date
+ c_decimal = "decimal(33, 18)"
+ c_timestamp = timestamp
+ c_row = {
+ c_map = "map"
+ c_array = "array"
+ c_string = string
+ c_boolean = boolean
+ c_int = int
+ c_bigint = bigint
+ c_double = double
+ c_bytes = bytes
+ c_date = date
+ c_decimal = "decimal(33, 18)"
+ c_timestamp = timestamp
+ }
+ }
+ }
+ }
+}
+
+transform {
+ # 如果你想知道更多关于如何配置seatunnel的信息和查看完整的transform插件,
+ # 请访问:https://seatunnel.apache.org/docs/transform-v2/sql
+}
+
+sink{
+ Console{}
+}
+```
+
+### 如何在项目中运行Job
+
+当你将代码拉到本地后,转到 `seatunnel-examples/seatunnel-flink-connector-v2-example` 模块,查找 `org.apache.seatunnel.example.flink.v2.SeaTunnelApiExample` 即可完成job的操作。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/seatunnel-engine/about.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/seatunnel-engine/about.md
new file mode 100644
index 000000000000..9deeec82f987
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/seatunnel-engine/about.md
@@ -0,0 +1,44 @@
+---
+
+sidebar_position: 1
+-------------------
+
+# SeaTunnel Engine 简介
+
+SeaTunnel Engine 是一个由社区开发的用于数据同步场景的引擎,作为 SeaTunnel 的默认引擎,它支持高吞吐量、低延迟和强一致性的数据同步作业操作,更快、更稳定、更节省资源且易于使用。
+
+SeaTunnel Engine 的整体设计遵循以下路径:
+
+- 更快,SeaTunnel Engine 的执行计划优化器旨在减少数据网络传输,从而减少由于数据序列化和反序列化造成的整体同步性能损失,使用户能够更快地完成数据同步操作。同时,支持速度限制,以合理速度同步数据。
+- 更稳定,SeaTunnel Engine 使用 Pipeline 作为数据同步任务的最小粒度的检查点和容错。任务的失败只会影响其上游和下游任务,避免了任务失败导致整个作业失败或回滚的情况。同时,SeaTunnel Engine 还支持数据缓存,用于源数据有存储时间限制的场景。当启用缓存时,从源读取的数据将自动缓存,然后由下游任务读取并写入目标。在这种情况下,即使由于目标失败而无法写入数据,也不会影响源的常规读取,防止源数据过期被删除。
+- 节省空间,SeaTunnel Engine 内部使用动态线程共享技术。在实时同步场景中,对于每个表数据量很大但每个表数据量很小的表,SeaTunnel Engine 将在共享线程中运行这些同步任务,以减少不必要的线程创建并节省系统空间。在读取和写入数据方面,SeaTunnel Engine 的设计目标是最小化 JDBC 连接的数量;在 CDC 场景中,SeaTunnel Engine 将重用日志读取和解析资源。
+- 简单易用,SeaTunnel Engine 减少了对第三方服务的依赖,并且可以独立于如 Zookeeper 和 HDFS 等大数据组件实现集群管理、快照存储和集群 HA 功能。这对于目前缺乏大数据平台的用户,或者不愿意依赖大数据平台进行数据同步的用户来说非常有用。
+
+未来,SeaTunnel Engine 将进一步优化其功能,以支持离线批同步的全量同步和增量同步、实时同步和 CDC。
+
+### 集群管理
+
+- 支持独立运行;
+- 支持集群运行;
+- 支持自治集群(去中心化),使用户无需为 SeaTunnel Engine 集群指定主节点,因为它可以在运行过程中自行选择主节点,并且在主节点失败时自动选择新的主节点;
+- 自治集群节点发现和具有相同 cluster_name 的节点将自动形成集群。
+
+### 核心功能
+
+- 支持在本地模式下运行作业,作业完成后集群自动销毁;
+- 支持在集群模式下运行作业(单机或集群),通过 SeaTunnel 客户端将作业提交给 SeaTunnel Engine 服务,作业完成后服务继续运行并等待下一个作业提交;
+- 支持离线批同步;
+- 支持实时同步;
+- 批流一体,所有 SeaTunnel V2 Connector 均可在 SeaTunnel Engine 中运行;
+- 支持分布式快照算法,并支持与 SeaTunnel V2 Connector 的两阶段提交,确保数据只执行一次。
+- 支持在 Pipeline 级别调用作业,以确保即使在资源有限的情况下也能启动;
+- 支持在 Pipeline 级别对作业进行容错。任务失败只影响其所在 Pipeline,只需要回滚 Pipeline 下的任务;
+- 支持动态线程共享,以实时同步大量小数据集。
+
+### 快速开始
+
+https://seatunnel.apache.org/docs/start-v2/locally/quick-start-seatunnel-engine
+
+### 下载安装
+
+[下载安装](download-seatunnel.md)
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/seatunnel-engine/checkpoint-storage.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/seatunnel-engine/checkpoint-storage.md
new file mode 100644
index 000000000000..f0c506fdbf88
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/seatunnel-engine/checkpoint-storage.md
@@ -0,0 +1,220 @@
+---
+
+sidebar_position: 7
+-------------------
+
+# 检查点存储
+
+## 简介
+
+检查点是一种容错恢复机制。这种机制确保程序在运行时,即使突然遇到异常,也能自行恢复。
+
+### 检查点存储
+
+SeaTunnel Engine支持以下检查点存储类型:
+
+- HDFS (OSS,S3,HDFS,LocalFile)
+- LocalFile (本地),(已弃用: 使用HDFS(LocalFile)替代).
+
+我们使用微内核设计模式将检查点存储模块从引擎中分离出来。这允许用户实现他们自己的检查点存储模块。
+
+`checkpoint-storage-api`是检查点 存储模块API,它定义了检查点存储模块的接口。
+
+如果你想实现你自己的检查点存储模块,你需要实现`CheckpointStorage`并提供相应的`CheckpointStorageFactory`实现。
+
+### 检查点存储配置
+
+`seatunnel-server`模块的配置在`seatunnel.yaml`文件中。
+
+```yaml
+
+seatunnel:
+ engine:
+ checkpoint:
+ storage:
+ type: hdfs #检查点存储的插件名称,支持hdfs(S3, local, hdfs), 默认为localfile (本地文件), 但这种方式已弃用
+ # 插件配置
+ plugin-config:
+ namespace: #检查点存储父路径,默认值为/seatunnel/checkpoint/
+ K1: V1 # 插件其它配置
+ K2: V2 # 插件其它配置
+```
+
+注意: namespace必须以"/"结尾。
+
+#### OSS
+
+阿里云OSS是基于hdfs-file,所以你可以参考[Hadoop OSS文档](https://hadoop.apache.org/docs/stable/hadoop-aliyun/tools/hadoop-aliyun/index.html)来配置oss.
+
+OSS buckets交互外,oss客户端需要与buckets交互所需的凭据。
+客户端支持多种身份验证机制,并且可以配置使用哪种机制及其使用顺序。也可以使用of org.apache.hadoop.fs.aliyun.oss.AliyunCredentialsProvider的自定义实现。
+如果您使用AliyunCredentialsProvider(可以从阿里云访问密钥管理中获得),它们包括一个access key和一个secret key。
+你可以这样配置:
+
+```yaml
+seatunnel:
+ engine:
+ checkpoint:
+ interval: 6000
+ timeout: 7000
+ storage:
+ type: hdfs
+ max-retained: 3
+ plugin-config:
+ storage.type: oss
+ oss.bucket: your-bucket
+ fs.oss.accessKeyId: your-access-key
+ fs.oss.accessKeySecret: your-secret-key
+ fs.oss.endpoint: endpoint address
+ fs.oss.credentials.provider: org.apache.hadoop.fs.aliyun.oss.AliyunCredentialsProvider
+```
+
+有关Hadoop Credential Provider API的更多信息,请参见: [Credential Provider API](https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/CredentialProviderAPI.html).
+
+阿里云OSS凭证提供程序实现见: [验证凭证提供](https://github.com/aliyun/aliyun-oss-java-sdk/tree/master/src/main/java/com/aliyun/oss/common/auth)
+
+#### S3
+
+S3基于hdfs-file,所以你可以参考[Hadoop s3文档](https://hadoop.apache.org/docs/stable/hadoop-aws/tools/hadoop-aws/index.html)来配置s3。
+
+除了与公共S3 buckets交互之外,S3A客户端需要与buckets交互所需的凭据。
+客户端支持多种身份验证机制,并且可以配置使用哪种机制及其使用顺序。也可以使用com.amazonaws.auth.AWSCredentialsProvider的自定义实现。
+如果您使用SimpleAWSCredentialsProvider(可以从Amazon Security Token服务中获得),它们包括一个access key和一个secret key。
+您可以这样配置:
+
+```yaml
+
+seatunnel:
+ engine:
+ checkpoint:
+ interval: 6000
+ timeout: 7000
+ storage:
+ type: hdfs
+ max-retained: 3
+ plugin-config:
+ storage.type: s3
+ s3.bucket: your-bucket
+ fs.s3a.access.key: your-access-key
+ fs.s3a.secret.key: your-secret-key
+ fs.s3a.aws.credentials.provider: org.apache.hadoop.fs.s3a.SimpleAWSCredentialsProvider
+
+
+```
+
+如果您使用`InstanceProfileCredentialsProvider`,它支持在EC2 VM中运行时使用实例配置文件凭据,您可以检查[iam-roles-for-amazon-ec2](https://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html).
+您可以这样配置:
+
+```yaml
+
+seatunnel:
+ engine:
+ checkpoint:
+ interval: 6000
+ timeout: 7000
+ storage:
+ type: hdfs
+ max-retained: 3
+ plugin-config:
+ storage.type: s3
+ s3.bucket: your-bucket
+ fs.s3a.endpoint: your-endpoint
+ fs.s3a.aws.credentials.provider: org.apache.hadoop.fs.s3a.InstanceProfileCredentialsProvider
+```
+
+有关Hadoop Credential Provider API的更多信息,请参见: [Credential Provider API](https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/CredentialProviderAPI.html).
+
+#### HDFS
+
+如果您使用HDFS,您可以这样配置:
+
+```yaml
+seatunnel:
+ engine:
+ checkpoint:
+ storage:
+ type: hdfs
+ max-retained: 3
+ plugin-config:
+ storage.type: hdfs
+ fs.defaultFS: hdfs://localhost:9000
+ // 如果您使用kerberos,您可以这样配置:
+ kerberosPrincipal: your-kerberos-principal
+ kerberosKeytabFilePath: your-kerberos-keytab
+```
+
+如果HDFS是HA模式,您可以这样配置:
+
+```yaml
+seatunnel:
+ engine:
+ checkpoint:
+ storage:
+ type: hdfs
+ max-retained: 3
+ plugin-config:
+ storage.type: hdfs
+ fs.defaultFS: hdfs://usdp-bing
+ seatunnel.hadoop.dfs.nameservices: usdp-bing
+ seatunnel.hadoop.dfs.ha.namenodes.usdp-bing: nn1,nn2
+ seatunnel.hadoop.dfs.namenode.rpc-address.usdp-bing.nn1: usdp-bing-nn1:8020
+ seatunnel.hadoop.dfs.namenode.rpc-address.usdp-bing.nn2: usdp-bing-nn2:8020
+ seatunnel.hadoop.dfs.client.failover.proxy.provider.usdp-bing: org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
+
+```
+
+如果HDFS在`hdfs-site.xml`或`core-site.xml`中有其他配置,只需使用`seatunnel.hadoop.`前缀设置HDFS配置即可。
+
+#### 本地文件
+
+```yaml
+seatunnel:
+ engine:
+ checkpoint:
+ interval: 6000
+ timeout: 7000
+ storage:
+ type: hdfs
+ max-retained: 3
+ plugin-config:
+ storage.type: hdfs
+ fs.defaultFS: file:/// # 请确保该目录具有写权限
+
+```
+
+### 开启高速缓存
+
+当storage:type为hdfs时,默认关闭cache。如果您想启用它,请设置为`disable.cache: false`。
+
+```yaml
+seatunnel:
+ engine:
+ checkpoint:
+ interval: 6000
+ timeout: 7000
+ storage:
+ type: hdfs
+ max-retained: 3
+ plugin-config:
+ storage.type: hdfs
+ disable.cache: false
+ fs.defaultFS: hdfs:/// # Ensure that the directory has written permission
+```
+
+or
+
+```yaml
+seatunnel:
+ engine:
+ checkpoint:
+ interval: 6000
+ timeout: 7000
+ storage:
+ type: hdfs
+ max-retained: 3
+ plugin-config:
+ storage.type: hdfs
+ disable.cache: false
+ fs.defaultFS: file:///
+```
+
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/seatunnel-engine/deployment.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/seatunnel-engine/deployment.md
new file mode 100644
index 000000000000..d9dc8d3b39c5
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/seatunnel-engine/deployment.md
@@ -0,0 +1,24 @@
+---
+
+sidebar_position: 3
+-------------------
+
+# SeaTunnel Engine(Zeta) 安装部署
+
+SeaTunnel Engine(Zeta) 支持三种不同的部署模式:本地模式、混合集群模式和分离集群模式。
+
+每种部署模式都有不同的使用场景和优缺点。在选择部署模式时,您应该根据您的需求和环境来选择。
+
+Local模式:只用于测试,每个任务都会启动一个独立的进程,任务运行完成后进程会退出。
+
+混合集群模式:SeaTunnel Engine 的Master服务和Worker服务混合在同一个进程中,所有节点都可以运行作业并参与选举成为master,即master节点也在同时运行同步任务。在该模式下,Imap(保存任务的状态信息用于为任务的容错提供支持)数据会分布在所有节点中。
+
+分离集群模式:SeaTunnel Engine 的Master服务和Worker服务分离,每个服务单独一个进程。Master节点只负责作业调度,rest api,任务提交等,Imap数据只存储在Master节点中。Worker节点只负责任务的执行,不参与选举成为master,也不存储Imap数据。
+
+使用建议:建议使用[分离集群模式](separated-cluster-deployment.md)。在混合集群模式下,Master节点要同步运行任务,当任务规模较大时,会影响Master节点的稳定性,一但Master节点宕机或心跳超时,会导致Master节点切换,Master节点切换会导致所有正在运行的任务进行容错,会进一步增长集群的负载。因此,我们更建议使用分离模式。
+
+[Local模式部署](local-mode-deployment.md)
+
+[混合集群模式部署](hybrid-cluster-deployment.md)
+
+[分离集群模式部署](separated-cluster-deployment.md)
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/seatunnel-engine/download-seatunnel.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/seatunnel-engine/download-seatunnel.md
new file mode 100644
index 000000000000..74281d0648f1
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/seatunnel-engine/download-seatunnel.md
@@ -0,0 +1,70 @@
+---
+
+sidebar_position: 2
+-------------------
+
+import Tabs from '@theme/Tabs';
+import TabItem from '@theme/TabItem';
+
+# 下载和制作安装包
+
+## 步骤 1: 准备工作
+
+在开始下载SeaTunnel之前,您需要确保您已经安装了SeaTunnel所需要的以下软件:
+
+* 安装[Java](https://www.java.com/en/download/) (Java 8 或 11, 其他高于Java 8的版本理论上也可以工作) 以及设置 `JAVA_HOME`。
+
+## 步骤 2: 下载 SeaTunnel
+
+进入[SeaTunnel下载页面](https://seatunnel.apache.org/download)下载最新版本的发布版安装包`seatunnel--bin.tar.gz`
+
+或者您也可以通过终端下载
+
+```shell
+export version="2.3.7"
+wget "https://archive.apache.org/dist/seatunnel/${version}/apache-seatunnel-${version}-bin.tar.gz"
+tar -xzvf "apache-seatunnel-${version}-bin.tar.gz"
+```
+
+## 步骤 3: 下载连接器插件
+
+从2.2.0-beta版本开始,二进制包不再默认提供连接器依赖,因此在第一次使用它时,您需要执行以下命令来安装连接器:(当然,您也可以从 [Apache Maven Repository](https://repo.maven.apache.org/maven2/org/apache/seatunnel/) 手动下载连接器,然后将其移动至`connectors/seatunnel`目录下)。
+
+```bash
+sh bin/install-plugin.sh 2.3.7
+```
+
+如果您需要指定的连接器版本,以2.3.7为例,您需要执行如下命令
+
+```bash
+sh bin/install-plugin.sh 2.3.7
+```
+
+通常您并不需要所有的连接器插件,所以您可以通过配置`config/plugin_config`来指定您所需要的插件,例如,您只需要`connector-console`插件,那么您可以修改plugin.properties配置文件如下
+
+```plugin_config
+--seatunnel-connectors--
+connector-console
+--end--
+```
+
+如果您希望示例应用程序能正常工作,那么您需要添加以下插件
+
+```plugin_config
+--seatunnel-connectors--
+connector-fake
+connector-console
+--end--
+```
+
+您可以在`${SEATUNNEL_HOME}/connectors/plugins-mapping.properties`下找到所有支持的连接器和相应的plugin_config配置名称。
+
+:::tip 提示
+
+如果您想通过手动下载连接器的方式来安装连接器插件,您只需要下载您所需要的连接器插件即可,并将它们放在`${SEATUNNEL_HOME}/connectors/`目录下
+
+:::
+
+现在你已经完成了SeaTunnel安装包的下载和连接器插件的下载。接下来,您可以根据您的需求选择不同的运行模式来运行或部署SeaTunnel。
+
+如果你使用SeaTunnel自带的SeaTunnel Engine(Zeta)来运行任务,需要先部署SeaTunnel Engine服务。参考[SeaTunnel Engine(Zeta)服务部署](deployment.md)
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/seatunnel-engine/engine-jar-storage-mode.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/seatunnel-engine/engine-jar-storage-mode.md
new file mode 100644
index 000000000000..81dc0cacb342
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/seatunnel-engine/engine-jar-storage-mode.md
@@ -0,0 +1,95 @@
+---
+
+sidebar_position: 9
+-------------------
+
+# 配置引擎 Jar 存储模式
+
+:::caution 警告
+
+请注意,此功能目前处于实验阶段,还有许多方面需要改进。因此,我们建议在使用此功能时谨慎行事,以避免潜在的问题和不必要的风险。
+我们致力于持续努力增强和稳定此功能,确保为您提供更好的体验。
+
+:::
+
+我们可以启用优化的作业提交过程,这在 `seatunnel.yaml` 中进行配置。启用了 Seatunnel 作业提交过程配置项的优化后,
+用户可以使用 Seatunnel Zeta 引擎作为执行引擎,而无需在每个引擎 `connector` 目录中放置任务执行所需的连接器 Jar 包或连接器所依赖的第三方 Jar 包。
+用户只需在提交作业的客户端上放置所有任务执行所需的 Jar 包,客户端将自动上传任务执行所需的 Jars 到 Zeta 引擎。在 Docker 或 k8s 模式下提交作业时,启用此配置项是必要的,
+这可以从根本上解决由 Seatunnel Zeta 引擎的重量造成的大型容器镜像问题。在镜像中,只需要提供 Zeta 引擎的核心框架包,
+然后可以将连接器的 jar 包和连接器所依赖的第三方 jar 包分别上传到 pod 进行分发。
+
+启用了优化作业提交过程配置项后,您不需要在 Zeta 引擎中放置以下两种类型的 Jar 包:
+- COMMON_PLUGIN_JARS
+- CONNECTOR_PLUGIN_JARS
+
+COMMON_ PLUGIN_ JARS 指的是连接器所依赖的第三方 Jar 包, CONNECTOR_ PLUGIN_ JARS 指的是连接器 Jar 包。
+当 Zeta 的 `lib` 中不存在公共 jars 时,它可以将客户端的本地公共 jars 上传到所有引擎节点的 `lib` 目录。
+这样,即使用户没有在 Zeta 的 `lib` 中放置 jar,任务仍然可以正常执行。
+然而,我们不推荐依赖打开优化作业提交过程的配置项来上传连接器所依赖的第三方 Jar 包。
+如果您使用 Zeta 引擎,请将连接器所依赖的第三方 jar 包文件添加到每个节点的 `$SEATUNNEL_HOME/lib/` 目录中,例如 jdbc 驱动程序。
+
+# 连接器 Jar 存储策略
+
+您可以通过配置文件配置当前连接器 Jar 包和连接器所依赖的第三方 Jar 包的存储策略。
+可以配置两种存储策略,即共享 Jar 包存储策略和隔离 Jar 包存储策略。
+两种不同的存储策略为 Jar 文件提供了更灵活的存储模式。
+您可以配置存储策略,使引擎中的多个执行作业共享相同的 Jar 包文件。
+
+## 相关配置
+
+| 参数 | 默认值 | 描述 |
+|-------------------------------------|--------|-------------------------------------------------------------------------|
+| connector-jar-storage-enable | false | 是否启用上传连接器 Jar 包到引擎。默认启用状态为 false。 |
+| connector-jar-storage-mode | SHARED | 引擎端 Jar 包存储模式选择。有两个可选模式,SHARED(共享)和 ISOLATED(隔离)。默认的 Jar 包存储模式是 SHARED。 |
+| connector-jar-storage-path | " " | 用户自定义的 Jar 包存储路径。 |
+| connector-jar-cleanup-task-interval | 3600s | 引擎端 Jar 包清理定时任务执行间隔。 |
+| connector-jar-expiry-time | 600s | 引擎端 Jar 包存储过期时间。 |
+
+## 隔离连接器Jar存储策略
+
+在作业提交之前,连接器 Jar 包将被上传到 Master 节点上的一个独立文件存储路径中。
+不同作业的连接器 Jar 包位于不同的存储路径中,因此不同作业的连接器 Jar 包彼此隔离。
+作业执行所需的 Jar 包文件不会影响其他作业。当当前作业执行结束时,基于 `JobId` 生成的存储路径中的 Jar 包文件将被删除。
+
+示例:
+
+```yaml
+jar-storage:
+ connector-jar-storage-enable: true
+ connector-jar-storage-mode: ISOLATED
+ connector-jar-storage-path: ""
+ connector-jar-cleanup-task-interval: 3600
+ connector-jar-expiry-time: 600
+```
+
+配置参数的详细解释:
+- connector-jar-storage-enable: 在执行作业前启用上传连接器 Jar 包的功能。
+- connector-jar-storage-mode: 连接器 Jar 包的存储模式,有两种存储模式可供选择:共享模式(SHARED)和隔离模式(ISOLATED)。
+- connector-jar-storage-path: 在 Zeta 引擎上用户自定义连接器 Jar 包的本地存储路径。
+- connector-jar-cleanup-task-interval: Zeta 引擎连接器 Jar 包定时清理任务的间隔时间,默认为 3600 秒。
+- connector-jar-expiry-time: 连接器 Jar 包的过期时间,默认为 600 秒。
+
+## 共享连接器Jar存储策略
+
+在作业提交之前,连接器 Jar 包将被上传到 Master 节点。如果不同的作业使用相同的 Jar 包文件,它们可以在 Master 节点上共享连接器 Jars。
+所有 Jar 包文件都被持久化到一个共享的文件存储路径中,引用 Master 节点的 Jar 包可以在不同作业之间共享。任务执行完成后,
+共享连接器Jar存储策略 不会立即删除与当前任务执行相关的所有 Jar 包,而是有一个独立的线程负责清理工作。
+以下配置文件中的配置设置了清理工作的运行时间和 Jar 包的存活时间。
+
+示例:
+
+```yaml
+jar-storage:
+ connector-jar-storage-enable: true
+ connector-jar-storage-mode: SHARED
+ connector-jar-storage-path: ""
+ connector-jar-cleanup-task-interval: 3600
+ connector-jar-expiry-time: 600
+```
+
+配置参数的详细解释:
+- connector-jar-storage-enable: 在执行作业前启用上传连接器 Jar 包的功能。
+- connector-jar-storage-mode: 连接器 Jar 包的存储模式,有两种存储模式可供选择:共享模式(SHARED)和隔离模式(ISOLATED)。
+- connector-jar-storage-path: 在 Zeta 引擎上用户自定义连接器 Jar 包的本地存储路径。
+- connector-jar-cleanup-task-interval: Zeta 引擎连接器 Jar 包定时清理任务的间隔时间,默认为 3600 秒。
+- connector-jar-expiry-time: 连接器 Jar 包的过期时间,默认为 600 秒。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/seatunnel-engine/hybrid-cluster-deployment.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/seatunnel-engine/hybrid-cluster-deployment.md
new file mode 100644
index 000000000000..4d101b416782
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/seatunnel-engine/hybrid-cluster-deployment.md
@@ -0,0 +1,315 @@
+---
+
+sidebar_position: 5
+-------------------
+
+# 部署 SeaTunnel Engine 混合模式集群
+
+SeaTunnel Engine 的Master服务和Worker服务混合在同一个进程中,所有节点都可以运行作业并参与选举成为master,即master节点也在同时运行同步任务。在该模式下,Imap(保存任务的状态信息用于为任务的容错提供支持)数据会分布在所有节点中。
+
+使用建议:建议使用分离集群模式。在混合集群模式下,Master节点要同步运行任务,当任务规模较大时,会影响Master节点的稳定性,一但Master节点宕机或心跳超时,会导致Master节点切换,Master节点切换会导致所有正在运行的任务进行容错,会进一步增长集群的负载。因此,我们更建议使用[分离集群模式](separated-cluster-deployment.md)。
+
+## 1. 下载
+
+[下载和制作SeaTunnel安装包](download-seatunnel.md)
+
+## 2 配置 SEATUNNEL_HOME
+
+您可以通过添加 `/etc/profile.d/seatunnel.sh` 文件来配置 `SEATUNNEL_HOME` 。`/etc/profile.d/seatunnel.sh` 的内容如下:
+
+```
+export SEATUNNEL_HOME=${seatunnel install path}
+export PATH=$PATH:$SEATUNNEL_HOME/bin
+```
+
+## 3. 配置 SeaTunnel Engine JVM 选项
+
+SeaTunnel Engine 支持两种设置 JVM 选项的方法。
+
+1. 将 JVM 选项添加到 `$SEATUNNEL_HOME/config/jvm_options`.
+
+ 修改 `$SEATUNNEL_HOME/config/jvm_options` 文件中的jvm参数。
+
+2. 在启动 SeaTunnel Engine 时添加 JVM 选项。例如 `seatunnel-cluster.sh -DJvmOption="-Xms2G -Xmx2G"`
+
+## 4. 配置 SeaTunnel Engine
+
+SeaTunnel Engine 提供许多功能,需要在 `seatunnel.yaml` 中进行配置。.
+
+### 4.1 Imap中数据的备份数设置
+
+SeaTunnel Engine 基于 [Hazelcast IMDG](https://docs.hazelcast.com/imdg/4.1/) 实现集群管理。集群的状态数据(作业运行状态、资源状态)存储在 [Hazelcast IMap](https://docs.hazelcast.com/imdg/4.1/data-structures/map)。
+存储在 Hazelcast IMap 中的数据将在集群的所有节点上分布和存储。Hazelcast 会分区存储在 Imap 中的数据。每个分区可以指定备份数量。
+因此,SeaTunnel Engine 可以实现集群 HA,无需使用其他服务(例如 zookeeper)。
+
+`backup count` 是定义同步备份数量的参数。例如,如果设置为 1,则分区的备份将放置在一个其他成员上。如果设置为 2,则将放置在两个其他成员上。
+
+我们建议 `backup-count` 的值为 `min(1, max(5, N/2))`。 `N` 是集群节点的数量。
+
+```yaml
+seatunnel:
+ engine:
+ backup-count: 1
+ # 其他配置
+```
+
+### 4.2 Slot配置
+
+Slot数量决定了集群节点可以并行运行的任务组数量。一个任务需要的Slot的个数公式为 N = 2 + P(任务配置的并行度)。 默认情况下SeaTunnel Engine的slot个数为动态,即不限制个数。我们建议slot的个数设置为节点CPU核心数的2倍。
+
+动态slot个数(默认)配置如下:
+
+```yaml
+seatunnel:
+ engine:
+ slot-service:
+ dynamic-slot: true
+ # 其他配置
+```
+
+静态slot个数配置如下:
+
+```yaml
+seatunnel:
+ engine:
+ slot-service:
+ dynamic-slot: false
+ slot-num: 20
+```
+
+### 4.3 检查点管理器
+
+与 Flink 一样,SeaTunnel Engine 支持 Chandy–Lamport 算法。因此,可以实现无数据丢失和重复的数据同步。
+
+**interval**
+
+两个检查点之间的间隔,单位是毫秒。如果在作业配置文件的 `env` 中配置了 `checkpoint.interval` 参数,将以作业配置文件中设置的为准。
+
+**timeout**
+
+检查点的超时时间。如果在超时时间内无法完成检查点,则会触发检查点失败,作业失败。如果在作业的配置文件的`env`中配置了`checkpoint.timeout`参数,将以作业配置文件中设置的为准。
+
+示例
+
+```yaml
+seatunnel:
+ engine:
+ backup-count: 1
+ print-execution-info-interval: 10
+ slot-service:
+ dynamic-slot: true
+ checkpoint:
+ interval: 300000
+ timeout: 10000
+```
+
+**checkpoint storage**
+
+检查点是一种容错恢复机制。这种机制确保程序在运行时,即使突然遇到异常,也能自行恢复。检查点定时触发,每次检查点进行时每个Task都会被要求将自身的状态信息(比如读取kafka时读取到了哪个offset)上报给检查点线程,由该线程写入一个分布式存储(或共享存储)。当任务失败然后自动容错恢复时,或者通过seatunnel.sh -r 指令恢复之前被暂停的任务时,会从检查点存储中加载对应作业的状态信息,并基于这些状态信息进行作业的恢复。
+
+如果集群的节点大于1,检查点存储必须是一个分布式存储,或者共享存储,这样才能保证任意节点挂掉后依然可以在另一个节点加载到存储中的任务状态信息。
+
+有关检查点存储的信息,您可以查看 [Checkpoint Storage](checkpoint-storage.md)
+
+### 4.4 历史作业过期配置
+
+每个完成的作业的信息,如状态、计数器和错误日志,都存储在 IMap 对象中。随着运行作业数量的增加,内存会增加,最终内存将溢出。因此,您可以调整 `history-job-expire-minutes` 参数来解决这个问题。此参数的时间单位是分钟。默认值是 1440 分钟,即一天。
+
+示例
+
+```yaml
+seatunnel:
+ engine:
+ history-job-expire-minutes: 1440
+```
+
+### 4.5 类加载器缓存模式
+
+此配置主要解决不断创建和尝试销毁类加载器所导致的资源泄漏问题。
+如果您遇到与metaspace空间溢出相关的异常,您可以尝试启用此配置。
+为了减少创建类加载器的频率,在启用此配置后,SeaTunnel 在作业完成时不会尝试释放相应的类加载器,以便它可以被后续作业使用,也就是说,当运行作业中使用的 Source/Sink 连接器类型不是太多时,它更有效。
+默认值是 false。
+示例
+
+```yaml
+seatunnel:
+ engine:
+ classloader-cache-mode: true
+```
+
+## 5. 配置 SeaTunnel Engine 网络服务
+
+所有 SeaTunnel Engine 网络相关的配置都在 `hazelcast.yaml` 文件中.
+
+### 5.1 集群名称
+
+SeaTunnel Engine 节点使用 `cluster-name` 来确定另一个节点是否与自己在同一集群中。如果两个节点之间的集群名称不同,SeaTunnel 引擎将拒绝服务请求。
+
+### 5.2 网络
+
+基于 [Hazelcast](https://docs.hazelcast.com/imdg/4.1/clusters/discovery-mechanisms), 一个 SeaTunnel Engine 集群是由运行 SeaTunnel Engine 服务器的集群成员组成的网络。 集群成员自动加入一起形成集群。这种自动加入是通过集群成员使用的各种发现机制来相互发现的。
+
+请注意,集群形成后,集群成员之间的通信始终通过 TCP/IP 进行,无论使用的发现机制如何。
+
+SeaTunnel Engine 使用以下发现机制。
+
+#### TCP
+
+您可以将 SeaTunnel Engine 配置为完整的 TCP/IP 集群。有关配置详细信息,请参阅 [Discovering Members By TCP Section](tcp.md)。
+
+一个示例如下 `hazelcast.yaml`
+
+```yaml
+hazelcast:
+ cluster-name: seatunnel
+ network:
+ join:
+ tcp-ip:
+ enabled: true
+ member-list:
+ - hostname1
+ port:
+ auto-increment: false
+ port: 5801
+ properties:
+ hazelcast.logging.type: log4j2
+```
+
+TCP 是我们建议在独立 SeaTunnel Engine 集群中使用的方式。
+
+另一方面,Hazelcast 提供了一些其他的服务发现方法。有关详细信息,请参阅 [Hazelcast Network](https://docs.hazelcast.com/imdg/4.1/clusters/setting-up-clusters)
+
+### 5.3 IMap持久化配置
+
+在SeaTunnel中,我们使用IMap(一种分布式的Map,可以实现数据跨节点跨进程的写入的读取 有关详细信息,请参阅 [hazelcast map](https://docs.hazelcast.com/imdg/4.2/data-structures/map)) 来存储每个任务及其task的状态,以便在任务所在节点宕机后,可以在其他节点上获取到任务之前的状态信息,从而恢复任务实现任务的容错。
+
+默认情况下Imap的信息只是存储在内存中,我们可以设置Imap数据的复本数,具体可参考(4.1 Imap中数据的备份数设置),如果复本数是2,代表每个数据会同时存储在2个不同的节点中。一旦节点宕机,Imap中的数据会重新在其它节点上自动补充到设置的复本数。但是当所有节点都被停止后,Imap中的数据会丢失。当集群节点再次启动后,所有之前正在运行的任务都会被标记为失败,需要用户手工通过seatunnel.sh -r 指令恢复运行。
+
+为了解决这个问题,我们可以将Imap中的数据持久化到外部存储中,如HDFS、OSS等。这样即使所有节点都被停止,Imap中的数据也不会丢失,当集群节点再次启动后,所有之前正在运行的任务都会被自动恢复。
+
+下面介绍如何使用 MapStore 持久化配置。有关详细信息,请参阅 [Hazelcast Map](https://docs.hazelcast.com/imdg/4.2/data-structures/map)
+
+**type**
+
+imap 持久化的类型,目前仅支持 `hdfs`。
+
+**namespace**
+
+它用于区分不同业务的数据存储位置,如 OSS 存储桶名称。
+
+**clusterName**
+
+此参数主要用于集群隔离, 我们可以使用它来区分不同的集群,如 cluster1、cluster2,这也用于区分不同的业务。
+
+**fs.defaultFS**
+
+我们使用 hdfs api 读写文件,因此使用此存储需要提供 hdfs 配置。
+
+如果您使用 HDFS,可以像这样配置:
+
+```yaml
+map:
+ engine*:
+ map-store:
+ enabled: true
+ initial-mode: EAGER
+ factory-class-name: org.apache.seatunnel.engine.server.persistence.FileMapStoreFactory
+ properties:
+ type: hdfs
+ namespace: /tmp/seatunnel/imap
+ clusterName: seatunnel-cluster
+ storage.type: hdfs
+ fs.defaultFS: hdfs://localhost:9000
+```
+
+如果没有 HDFS,并且您的集群只有一个节点,您可以像这样配置使用本地文件:
+
+```yaml
+map:
+ engine*:
+ map-store:
+ enabled: true
+ initial-mode: EAGER
+ factory-class-name: org.apache.seatunnel.engine.server.persistence.FileMapStoreFactory
+ properties:
+ type: hdfs
+ namespace: /tmp/seatunnel/imap
+ clusterName: seatunnel-cluster
+ storage.type: hdfs
+ fs.defaultFS: file:///
+```
+
+如果您使用 OSS,可以像这样配置:
+
+```yaml
+map:
+ engine*:
+ map-store:
+ enabled: true
+ initial-mode: EAGER
+ factory-class-name: org.apache.seatunnel.engine.server.persistence.FileMapStoreFactory
+ properties:
+ type: hdfs
+ namespace: /tmp/seatunnel/imap
+ clusterName: seatunnel-cluster
+ storage.type: oss
+ block.size: block size(bytes)
+ oss.bucket: oss://bucket name/
+ fs.oss.accessKeyId: OSS access key id
+ fs.oss.accessKeySecret: OSS access key secret
+ fs.oss.endpoint: OSS endpoint
+```
+
+注意:使用OSS 时,确保 lib目录下有这几个jar.
+
+```
+aliyun-sdk-oss-3.13.2.jar
+hadoop-aliyun-3.3.6.jar
+jdom2-2.0.6.jar
+netty-buffer-4.1.89.Final.jar
+netty-common-4.1.89.Final.jar
+seatunnel-hadoop3-3.1.4-uber.jar
+```
+
+## 6. 配置 SeaTunnel Engine 客户端
+
+所有 SeaTunnel Engine 客户端的配置都在 `hazelcast-client.yaml` 里。
+
+### 6.1 cluster-name
+
+客户端必须与 SeaTunnel Engine 具有相同的 `cluster-name`。否则,SeaTunnel Engine 将拒绝客户端的请求。
+
+### 6.2 网络
+
+**cluster-members**
+
+需要将所有 SeaTunnel Engine 服务器节点的地址添加到这里。
+
+```yaml
+hazelcast-client:
+ cluster-name: seatunnel
+ properties:
+ hazelcast.logging.type: log4j2
+ network:
+ cluster-members:
+ - hostname1:5801
+```
+
+## 7. 启动 SeaTunnel Engine 服务器节点
+
+可以通过守护进程使用 `-d` 参数启动。
+
+```shell
+mkdir -p $SEATUNNEL_HOME/logs
+./bin/seatunnel-cluster.sh -d
+```
+
+日志将写入 `$SEATUNNEL_HOME/logs/seatunnel-engine-server.log`
+
+## 8. 安装 SeaTunnel Engine 客户端
+
+您只需将 SeaTunnel Engine 节点上的 `$SEATUNNEL_HOME` 目录复制到客户端节点,并像 SeaTunnel Engine 服务器节点一样配置 `SEATUNNEL_HOME`。
+
+## 9. 提交作业和管理作业
+
+现在集群部署完成了,您可以通过以下教程完成作业的提交和管理:[提交和管理作业](user-command.md)
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/seatunnel-engine/local-mode-deployment.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/seatunnel-engine/local-mode-deployment.md
new file mode 100644
index 000000000000..0230cfcca1a9
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/seatunnel-engine/local-mode-deployment.md
@@ -0,0 +1,35 @@
+---
+
+sidebar_position: 4
+-------------------
+
+# 以Local模式运行作业
+
+仅用于测试。
+
+Local模式下每个任务都会启动一个独立的进程,任务运行完成后进程会退出。在该模式下有以下限制:
+
+1. 不支持任务的暂停、恢复。
+2. 不支持获取任务列表查看。
+3. 不支持通过命令取消作业,只能通过Kill进程的方式终止任务。
+4. 不支持RESTful API。
+
+最推荐在生产环境中使用SeaTunnel Engine的[分离集群模式](separated-cluster-deployment.md)
+
+## 本地模式部署SeaTunnel Engine
+
+本地模式下,不需要部署SeaTunnel Engine集群,只需要使用如下命令即可提交作业即可。系统会在提交提交作业的进程中启动SeaTunnel Engine(Zeta)服务来运行提交的作业,作业完成后进程退出。
+
+该模式下只需要将下载和制作好的安装包拷贝到需要运行的服务器上即可,如果需要调整作业运行的JVM参数,可以修改$SEATUNNEL_HOME/config/jvm_client_options文件。
+
+## 提交作业
+
+```shell
+$SEATUNNEL_HOME/bin/seatunnel.sh --config $SEATUNNEL_HOME/config/v2.batch.config.template -e local
+```
+
+## 作业运维
+
+Local模式下提交的作业会在提交作业的进程中运行,作业完成后进程会退出,如果要中止作业只需要退出提交作业的进程即可。作业的运行日志会输出到提交作业的进程的标准输出中。
+
+不支持其它运维操作。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/seatunnel-engine/resource-isolation.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/seatunnel-engine/resource-isolation.md
new file mode 100644
index 000000000000..a175e9c51ecc
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/seatunnel-engine/resource-isolation.md
@@ -0,0 +1,83 @@
+---
+
+sidebar_position: 9
+-------------------
+
+在2.3.6版本之后, SeaTunnel支持对每个实例添加`tag`, 然后在提交任务时可以在配置文件中使用`tag_filter`来选择任务将要运行的节点.
+
+# 如何实现改功能
+
+1. 更新`hazelcast.yaml`文件
+
+```yaml
+hazelcast:
+ cluster-name: seatunnel
+ network:
+ rest-api:
+ enabled: true
+ endpoint-groups:
+ CLUSTER_WRITE:
+ enabled: true
+ DATA:
+ enabled: true
+ join:
+ tcp-ip:
+ enabled: true
+ member-list:
+ - localhost
+ port:
+ auto-increment: false
+ port: 5801
+ properties:
+ hazelcast.invocation.max.retry.count: 20
+ hazelcast.tcp.join.port.try.count: 30
+ hazelcast.logging.type: log4j2
+ hazelcast.operation.generic.thread.count: 50
+ member-attributes:
+ group:
+ type: string
+ value: platform
+ team:
+ type: string
+ value: team1
+```
+
+在这个配置中, 我们通过`member-attributes`设置了`group=platform, team=team1`这样两个`tag`
+
+2. 在任务的配置中添加`tag_filter`来选择你需要运行该任务的节点
+
+```hacon
+env {
+ parallelism = 1
+ job.mode = "BATCH"
+ tag_filter {
+ group = "platform"
+ team = "team1"
+ }
+}
+source {
+ FakeSource {
+ result_table_name = "fake"
+ parallelism = 1
+ schema = {
+ fields {
+ name = "string"
+ }
+ }
+ }
+}
+transform {
+}
+sink {
+ console {
+ source_table_name="fake"
+ }
+}
+```
+
+**注意:**
+- 当在任务的配置中, 没有添加`tag_filter`时, 会从所有节点中随机选择节点来运行任务.
+- 当`tag_filter`中存在多个过滤条件时, 会根据key存在以及value相等的全部匹配的节点, 当没有找到匹配的节点时, 会抛出 `NoEnoughResourceException`异常.
+
+![img.png](/image_zh/resource-isolation.png)
+
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/seatunnel-engine/rest-api.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/seatunnel-engine/rest-api.md
new file mode 100644
index 000000000000..1b0166425ba4
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/seatunnel-engine/rest-api.md
@@ -0,0 +1,490 @@
+---
+
+sidebar_position: 11
+--------------------
+
+# RESTful API
+
+SeaTunnel有一个用于监控的API,可用于查询运行作业的状态和统计信息,以及最近完成的作业。监控API是RESTful风格的,它接受HTTP请求并使用JSON数据格式进行响应。
+
+## 概述
+
+监控API是由运行的web服务提供的,它是节点运行的一部分,每个节点成员都可以提供rest API功能。
+默认情况下,该服务监听端口为5801,该端口可以在hazelcast.yaml中配置,如下所示:
+
+```yaml
+network:
+ rest-api:
+ enabled: true
+ endpoint-groups:
+ CLUSTER_WRITE:
+ enabled: true
+ DATA:
+ enabled: true
+ join:
+ tcp-ip:
+ enabled: true
+ member-list:
+ - localhost
+ port:
+ auto-increment: true
+ port-count: 100
+ port: 5801
+```
+
+## API参考
+
+### 返回Zeta集群的概览
+
+
+ GET
/hazelcast/rest/maps/overview?tag1=value1&tag2=value2
(Returns an overview over the Zeta engine cluster.)
+
+#### 参数
+
+> | 参数名称 | 是否必传 | 参数类型 | 参数描述 |
+> |--------|------|------|--------------------------|
+> | tag键值对 | 否 | 字符串 | 一组标签值, 通过该标签值过滤满足条件的节点信息 |
+
+#### 响应
+
+```json
+{
+ "projectVersion":"2.3.5-SNAPSHOT",
+ "gitCommitAbbrev":"DeadD0d0",
+ "totalSlot":"0",
+ "unassignedSlot":"0",
+ "works":"1",
+ "runningJobs":"0",
+ "finishedJobs":"0",
+ "failedJobs":"0",
+ "cancelledJobs":"0"
+}
+```
+
+**注意:**
+- 当你使用`dynamic-slot`时, 返回结果中的`totalSlot`和`unassignedSlot`将始终为0. 设置为固定的slot值后, 将正确返回集群中总共的slot数量以及未分配的slot数量.
+- 当添加标签过滤后, `works`, `totalSlot`, `unassignedSlot`将返回满足条件的节点的相关指标. 注意`runningJobs`等job相关指标为集群级别结果, 无法根据标签进行过滤.
+
+
+
+------------------------------------------------------------------------------------------
+
+### 返回所有作业及其当前状态的概览。
+
+
+ GET
/hazelcast/rest/maps/running-jobs
(返回所有作业及其当前状态的概览。)
+
+#### 参数
+
+#### 响应
+
+```json
+[
+ {
+ "jobId": "",
+ "jobName": "",
+ "jobStatus": "",
+ "envOptions": {
+ },
+ "createTime": "",
+ "jobDag": {
+ "vertices": [
+ ],
+ "edges": [
+ ]
+ },
+ "pluginJarsUrls": [
+ ],
+ "isStartWithSavePoint": false,
+ "metrics": {
+ "sourceReceivedCount": "",
+ "sinkWriteCount": ""
+ }
+ }
+]
+```
+
+
+
+------------------------------------------------------------------------------------------
+
+### 返回作业的详细信息。
+
+
+ GET
/hazelcast/rest/maps/job-info/:jobId
(返回作业的详细信息。)
+
+#### 参数
+
+> | 参数名称 | 是否必传 | 参数类型 | 参数描述 |
+> |-------|------|------|--------|
+> | jobId | 是 | long | job id |
+
+#### 响应
+
+```json
+{
+ "jobId": "",
+ "jobName": "",
+ "jobStatus": "",
+ "createTime": "",
+ "jobDag": {
+ "vertices": [
+ ],
+ "edges": [
+ ]
+ },
+ "metrics": {
+ "sourceReceivedCount": "",
+ "sinkWriteCount": ""
+ },
+ "finishedTime": "",
+ "errorMsg": null,
+ "envOptions": {
+ },
+ "pluginJarsUrls": [
+ ],
+ "isStartWithSavePoint": false
+}
+```
+
+`jobId`, `jobName`, `jobStatus`, `createTime`, `jobDag`, `metrics` 字段总会返回.
+`envOptions`, `pluginJarsUrls`, `isStartWithSavePoint` 字段在Job在RUNNING状态时会返回
+`finishedTime`, `errorMsg` 字段在Job结束时会返回,结束状态为不为RUNNING,可能为FINISHED,可能为CANCEL
+
+当我们查询不到这个Job时,返回结果为:
+
+```json
+{
+ "jobId" : ""
+}
+```
+
+
+
+------------------------------------------------------------------------------------------
+
+### 返回作业的详细信息
+
+此API已经弃用,请使用/hazelcast/rest/maps/job-info/:jobId替代。
+
+
+ GET
/hazelcast/rest/maps/running-job/:jobId
(返回作业的详细信息。)
+
+#### 参数
+
+> | 参数名称 | 是否必传 | 参数类型 | 参数描述 |
+> |-------|------|------|--------|
+> | jobId | 是 | long | job id |
+
+#### 响应
+
+```json
+{
+ "jobId": "",
+ "jobName": "",
+ "jobStatus": "",
+ "createTime": "",
+ "jobDag": {
+ "vertices": [
+ ],
+ "edges": [
+ ]
+ },
+ "metrics": {
+ "sourceReceivedCount": "",
+ "sinkWriteCount": ""
+ },
+ "finishedTime": "",
+ "errorMsg": null,
+ "envOptions": {
+ },
+ "pluginJarsUrls": [
+ ],
+ "isStartWithSavePoint": false
+}
+```
+
+`jobId`, `jobName`, `jobStatus`, `createTime`, `jobDag`, `metrics` 字段总会返回.
+`envOptions`, `pluginJarsUrls`, `isStartWithSavePoint` 字段在Job在RUNNING状态时会返回
+`finishedTime`, `errorMsg` 字段在Job结束时会返回,结束状态为不为RUNNING,可能为FINISHED,可能为CANCEL
+
+当我们查询不到这个Job时,返回结果为:
+
+```json
+{
+ "jobId" : ""
+}
+```
+
+
+
+------------------------------------------------------------------------------------------
+
+### 返回所有已完成的作业信息。
+
+
+ GET
/hazelcast/rest/maps/finished-jobs/:state
(返回所有已完成的作业信息。)
+
+#### 参数
+
+> | 参数名称 | 是否必传 | 参数类型 | 参数描述 |
+> |-------|----------|--------|------------------------------------------------------------------|
+> | state | optional | string | finished job status. `FINISHED`,`CANCELED`,`FAILED`,`UNKNOWABLE` |
+
+#### 响应
+
+```json
+[
+ {
+ "jobId": "",
+ "jobName": "",
+ "jobStatus": "",
+ "errorMsg": null,
+ "createTime": "",
+ "finishTime": "",
+ "jobDag": "",
+ "metrics": ""
+ }
+]
+```
+
+
+
+------------------------------------------------------------------------------------------
+
+### 返回系统监控信息。
+
+
+ GET
/hazelcast/rest/maps/system-monitoring-information
(返回系统监控信息。)
+
+#### 参数
+
+#### 响应
+
+```json
+[
+ {
+ "processors":"8",
+ "physical.memory.total":"16.0G",
+ "physical.memory.free":"16.3M",
+ "swap.space.total":"0",
+ "swap.space.free":"0",
+ "heap.memory.used":"135.7M",
+ "heap.memory.free":"440.8M",
+ "heap.memory.total":"576.5M",
+ "heap.memory.max":"3.6G",
+ "heap.memory.used/total":"23.54%",
+ "heap.memory.used/max":"3.73%",
+ "minor.gc.count":"6",
+ "minor.gc.time":"110ms",
+ "major.gc.count":"2",
+ "major.gc.time":"73ms",
+ "load.process":"24.78%",
+ "load.system":"60.00%",
+ "load.systemAverage":"2.07",
+ "thread.count":"117",
+ "thread.peakCount":"118",
+ "cluster.timeDiff":"0",
+ "event.q.size":"0",
+ "executor.q.async.size":"0",
+ "executor.q.client.size":"0",
+ "executor.q.client.query.size":"0",
+ "executor.q.client.blocking.size":"0",
+ "executor.q.query.size":"0",
+ "executor.q.scheduled.size":"0",
+ "executor.q.io.size":"0",
+ "executor.q.system.size":"0",
+ "executor.q.operations.size":"0",
+ "executor.q.priorityOperation.size":"0",
+ "operations.completed.count":"10",
+ "executor.q.mapLoad.size":"0",
+ "executor.q.mapLoadAllKeys.size":"0",
+ "executor.q.cluster.size":"0",
+ "executor.q.response.size":"0",
+ "operations.running.count":"0",
+ "operations.pending.invocations.percentage":"0.00%",
+ "operations.pending.invocations.count":"0",
+ "proxy.count":"8",
+ "clientEndpoint.count":"0",
+ "connection.active.count":"2",
+ "client.connection.count":"0",
+ "connection.count":"0"
+ }
+]
+```
+
+
+
+------------------------------------------------------------------------------------------
+
+### 提交作业。
+
+
+POST
/hazelcast/rest/maps/submit-job
(如果作业提交成功,返回jobId和jobName。)
+
+#### 参数
+
+> | 参数名称 | 是否必传 | 参数类型 | 参数描述 |
+> |----------------------|----------|--------|-----------------------------------|
+> | jobId | optional | string | job id |
+> | jobName | optional | string | job name |
+> | isStartWithSavePoint | optional | string | if job is started with save point |
+
+#### 请求体
+
+```json
+{
+ "env": {
+ "job.mode": "batch"
+ },
+ "source": [
+ {
+ "plugin_name": "FakeSource",
+ "result_table_name": "fake",
+ "row.num": 100,
+ "schema": {
+ "fields": {
+ "name": "string",
+ "age": "int",
+ "card": "int"
+ }
+ }
+ }
+ ],
+ "transform": [
+ ],
+ "sink": [
+ {
+ "plugin_name": "Console",
+ "source_table_name": ["fake"]
+ }
+ ]
+}
+```
+
+#### 响应
+
+```json
+{
+ "jobId": 733584788375666689,
+ "jobName": "rest_api_test"
+}
+```
+
+
+
+------------------------------------------------------------------------------------------
+
+### 停止作业。
+
+
+POST
/hazelcast/rest/maps/stop-job
(如果作业成功停止,返回jobId。)
+
+#### 请求体
+
+```json
+{
+ "jobId": 733584788375666689,
+ "isStopWithSavePoint": false # if job is stopped with save point
+}
+```
+
+#### 响应
+
+```json
+{
+"jobId": 733584788375666689
+}
+```
+
+
+
+------------------------------------------------------------------------------------------
+
+### 加密配置。
+
+
+POST
/hazelcast/rest/maps/encrypt-config
(如果配置加密成功,则返回加密后的配置。)
+有关自定义加密的更多信息,请参阅文档[配置-加密-解密](../connector-v2/Config-Encryption-Decryption.md).
+
+#### 请求体
+
+```json
+{
+ "env": {
+ "parallelism": 1,
+ "shade.identifier":"base64"
+ },
+ "source": [
+ {
+ "plugin_name": "MySQL-CDC",
+ "schema" : {
+ "fields": {
+ "name": "string",
+ "age": "int"
+ }
+ },
+ "result_table_name": "fake",
+ "parallelism": 1,
+ "hostname": "127.0.0.1",
+ "username": "seatunnel",
+ "password": "seatunnel_password",
+ "table-name": "inventory_vwyw0n"
+ }
+ ],
+ "transform": [
+ ],
+ "sink": [
+ {
+ "plugin_name": "Clickhouse",
+ "host": "localhost:8123",
+ "database": "default",
+ "table": "fake_all",
+ "username": "seatunnel",
+ "password": "seatunnel_password"
+ }
+ ]
+}
+```
+
+#### 响应
+
+```json
+{
+ "env": {
+ "parallelism": 1,
+ "shade.identifier": "base64"
+ },
+ "source": [
+ {
+ "plugin_name": "MySQL-CDC",
+ "schema": {
+ "fields": {
+ "name": "string",
+ "age": "int"
+ }
+ },
+ "result_table_name": "fake",
+ "parallelism": 1,
+ "hostname": "127.0.0.1",
+ "username": "c2VhdHVubmVs",
+ "password": "c2VhdHVubmVsX3Bhc3N3b3Jk",
+ "table-name": "inventory_vwyw0n"
+ }
+ ],
+ "transform": [],
+ "sink": [
+ {
+ "plugin_name": "Clickhouse",
+ "host": "localhost:8123",
+ "database": "default",
+ "table": "fake_all",
+ "username": "c2VhdHVubmVs",
+ "password": "c2VhdHVubmVsX3Bhc3N3b3Jk"
+ }
+ ]
+}
+```
+
+
+
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/seatunnel-engine/savepoint.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/seatunnel-engine/savepoint.md
new file mode 100644
index 000000000000..b1bab640e5e4
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/seatunnel-engine/savepoint.md
@@ -0,0 +1,26 @@
+---
+
+sidebar_position: 8
+-------------------
+
+# 使用保存点和通过保存点恢复
+
+保存点是使用检查点创建的,它是作业执行状态的全局镜像,可以用于作业或 SeaTunnel 的停止和恢复、升级等。
+
+## 使用保存点
+
+要使用保存点, 您需要确保作业使用的连接器支持检查点,否则数据可能会丢失或重复。
+
+1. 确保作业正在运行。
+
+2. 使用以下命令触发保存点:
+
+ ```./bin/seatunnel.sh -s {jobId}```
+
+执行成功后,检查点数据将被保存,任务将结束。
+
+## 使用保存点进行恢复
+
+通过 `jobId` 使用保存点来恢复作业。
+
+```./bin/seatunnel.sh -c {jobConfig} -r {jobId}```
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/seatunnel-engine/separated-cluster-deployment.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/seatunnel-engine/separated-cluster-deployment.md
new file mode 100644
index 000000000000..ce328d3bd572
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/seatunnel-engine/separated-cluster-deployment.md
@@ -0,0 +1,433 @@
+---
+
+sidebar_position: 6
+-------------------
+
+# 部署 SeaTunnel Engine 分离模式集群
+
+SeaTunnel Engine 的Master服务和Worker服务分离,每个服务单独一个进程。Master节点只负责作业调度,RESTful API,任务提交等,Imap数据只存储在Master节点中。Worker节点只负责任务的执行,不参与选举成为master,也不存储Imap数据。
+
+在所有Master节点中,同一时间只有一个Master节点工作,其他Master节点处于standby状态。当当前Master节点宕机或心跳超时,会从其它Master节点中选举出一个新的Master Active节点。
+
+这是最推荐的一种使用方式,在该模式下Master的负载会很小,Master有更多的资源用来进行作业的调度,任务的容错指标监控以及提供rest api服务等,会有更高的稳定性。同时Worker节点不存储Imap的数据,所有的Imap数据都存储在Master节点中,即使Worker节点负载高或者挂掉,也不会导致Imap数据重新分布。
+
+## 1. 下载
+
+[下载和制作SeaTunnel安装包](download-seatunnel.md)
+
+## 2 配置 SEATUNNEL_HOME
+
+您可以通过添加 `/etc/profile.d/seatunnel.sh` 文件来配置 `SEATUNNEL_HOME` 。`/etc/profile.d/seatunnel.sh` 的内容如下:
+
+```
+export SEATUNNEL_HOME=${seatunnel install path}
+export PATH=$PATH:$SEATUNNEL_HOME/bin
+```
+
+## 3. 配置 Master 节点 JVM 选项
+
+Master节点的JVM参数在`$SEATUNNEL_HOME/config/jvm_master_options`文件中配置。
+
+```shell
+# JVM Heap
+-Xms2g
+-Xmx2g
+
+# JVM Dump
+-XX:+HeapDumpOnOutOfMemoryError
+-XX:HeapDumpPath=/tmp/seatunnel/dump/zeta-server
+
+# Metaspace
+-XX:MaxMetaspaceSize=2g
+
+# G1GC
+-XX:+UseG1GC
+
+```
+
+Worker节点的JVM参数在`$SEATUNNEL_HOME/config/jvm_worker_options`文件中配置。
+
+```shell
+# JVM Heap
+-Xms2g
+-Xmx2g
+
+# JVM Dump
+-XX:+HeapDumpOnOutOfMemoryError
+-XX:HeapDumpPath=/tmp/seatunnel/dump/zeta-server
+
+# Metaspace
+-XX:MaxMetaspaceSize=2g
+
+# G1GC
+-XX:+UseG1GC
+
+```
+
+## 4. 配置 SeaTunnel Engine
+
+SeaTunnel Engine 提供许多功能,需要在 `seatunnel.yaml` 中进行配置。.
+
+### 4.1 Imap中数据的备份数设置(该参数在Worker节点无效)
+
+SeaTunnel Engine 基于 [Hazelcast IMDG](https://docs.hazelcast.com/imdg/4.1/) 实现集群管理。集群的状态数据(作业运行状态、资源状态)存储在 [Hazelcast IMap](https://docs.hazelcast.com/imdg/4.1/data-structures/map)。
+存储在 Hazelcast IMap 中的数据将在集群的所有节点上分布和存储。Hazelcast 会分区存储在 Imap 中的数据。每个分区可以指定备份数量。
+因此,SeaTunnel Engine 可以实现集群 HA,无需使用其他服务(例如 zookeeper)。
+
+`backup count` 是定义同步备份数量的参数。例如,如果设置为 1,则分区的备份将放置在一个其他成员上。如果设置为 2,则将放置在两个其他成员上。
+
+我们建议 `backup-count` 的值为 `min(1, max(5, N/2))`。 `N` 是集群节点的数量。
+
+```yaml
+seatunnel:
+ engine:
+ backup-count: 1
+ # 其他配置
+```
+
+:::tip
+
+由于在分离集群模式下,Worker节点不存储Imap数据,因此Worker节点的`backup-count`配置无效。如果Master和Worker进程在同一个机器上启动,Master和Worker会共用`seatunnel.yaml`配置文件,此时Worker节点服务会忽略`backup-count`配置。
+
+:::
+
+### 4.2 Slot配置(该参数在Master节点无效)
+
+Slot数量决定了集群节点可以并行运行的任务组数量。一个任务需要的Slot的个数公式为 N = 2 + P(任务配置的并行度)。 默认情况下SeaTunnel Engine的slot个数为动态,即不限制个数。我们建议slot的个数设置为节点CPU核心数的2倍。
+
+动态slot个数(默认)配置如下:
+
+```yaml
+seatunnel:
+ engine:
+ slot-service:
+ dynamic-slot: true
+ # 其他配置
+```
+
+静态slot个数配置如下:
+
+```yaml
+seatunnel:
+ engine:
+ slot-service:
+ dynamic-slot: false
+ slot-num: 20
+```
+
+:::tip
+
+由于在分离集群模式下,Master节点不运行任务,所以Master服务不会启动Slot服务,因此Master节点的`slot-service`配置无效。如果Master和Worker进程在同一个机器上启动,Master和Worker会共用`seatunnel.yaml`配置文件,此时Master节点服务会忽略`slot-service`配置。
+
+:::
+
+### 4.3 检查点管理器(该参数在Worker节点无效)
+
+与 Flink 一样,SeaTunnel Engine 支持 Chandy–Lamport 算法。因此,可以实现无数据丢失和重复的数据同步。
+
+**interval**
+
+两个检查点之间的间隔,单位是毫秒。如果在作业配置文件的 `env` 中配置了 `checkpoint.interval` 参数,将以作业配置文件中设置的为准。
+
+**timeout**
+
+检查点的超时时间。如果在超时时间内无法完成检查点,则会触发检查点失败,作业失败。如果在作业的配置文件的`env`中配置了`checkpoint.timeout`参数,将以作业配置文件中设置的为准。
+
+示例
+
+```yaml
+seatunnel:
+ engine:
+ backup-count: 1
+ print-execution-info-interval: 10
+ slot-service:
+ dynamic-slot: true
+ checkpoint:
+ interval: 300000
+ timeout: 10000
+```
+
+**checkpoint storage**
+
+检查点是一种容错恢复机制。这种机制确保程序在运行时,即使突然遇到异常,也能自行恢复。检查点定时触发,每次检查点进行时每个Task都会被要求将自身的状态信息(比如读取kafka时读取到了哪个offset)上报给检查点线程,由该线程写入一个分布式存储(或共享存储)。当任务失败然后自动容错恢复时,或者通过seatunnel.sh -r 指令恢复之前被暂停的任务时,会从检查点存储中加载对应作业的状态信息,并基于这些状态信息进行作业的恢复。
+
+如果集群的节点大于1,检查点存储必须是一个分布式存储,或者共享存储,这样才能保证任意节点挂掉后依然可以在另一个节点加载到存储中的任务状态信息。
+
+:::tip
+
+检查点配置只有Master服务才会读取,Worker服务不会读取检查点配置。如果Master和Worker进程在同一个机器上启动,Master和Worker会共用`seatunnel.yaml`配置文件,此时Worker节点服务会忽略`checkpoint`配置。
+
+:::
+
+有关检查点存储的信息,您可以查看 [Checkpoint Storage](checkpoint-storage.md)
+
+### 4.4 历史作业过期配置
+
+每个完成的作业的信息,如状态、计数器和错误日志,都存储在 IMap 对象中。随着运行作业数量的增加,内存会增加,最终内存将溢出。因此,您可以调整 `history-job-expire-minutes` 参数来解决这个问题。此参数的时间单位是分钟。默认值是 1440 分钟,即一天。
+
+示例
+
+```yaml
+seatunnel:
+ engine:
+ history-job-expire-minutes: 1440
+```
+
+### 4.5 类加载器缓存模式
+
+此配置主要解决不断创建和尝试销毁类加载器所导致的资源泄漏问题。
+如果您遇到与metaspace空间溢出相关的异常,您可以尝试启用此配置。
+为了减少创建类加载器的频率,在启用此配置后,SeaTunnel 在作业完成时不会尝试释放相应的类加载器,以便它可以被后续作业使用,也就是说,当运行作业中使用的 Source/Sink 连接器类型不是太多时,它更有效。
+默认值是 false。
+示例
+
+```yaml
+seatunnel:
+ engine:
+ classloader-cache-mode: true
+```
+
+### 4.6 IMap持久化配置(该参数在Worker节点无效)
+
+:::tip
+
+由于在分离集群模式下,只有Master节点存储Imap数据,Worker节点不存储Imap数据,所以Worker服务不会读取该参数项。
+
+:::
+
+在SeaTunnel中,我们使用IMap(一种分布式的Map,可以实现数据跨节点跨进程的写入的读取 有关详细信息,请参阅 [Hazelcast Map](https://docs.hazelcast.com/imdg/4.2/data-structures/map)) 来存储每个任务及其task的状态,以便在任务所在节点宕机后,可以在其他节点上获取到任务之前的状态信息,从而恢复任务实现任务的容错。
+
+默认情况下Imap的信息只是存储在内存中,我们可以设置Imap数据的复本数,具体可参考(4.1 Imap中数据的备份数设置),如果复本数是2,代表每个数据会同时存储在2个不同的节点中。一旦节点宕机,Imap中的数据会重新在其它节点上自动补充到设置的复本数。但是当所有节点都被停止后,Imap中的数据会丢失。当集群节点再次启动后,所有之前正在运行的任务都会被标记为失败,需要用户手工通过seatunnel.sh -r 指令恢复运行。
+
+为了解决这个问题,我们可以将Imap中的数据持久化到外部存储中,如HDFS、OSS等。这样即使所有节点都被停止,Imap中的数据也不会丢失,当集群节点再次启动后,所有之前正在运行的任务都会被自动恢复。
+
+下面介绍如何使用 MapStore 持久化配置。有关详细信息,请参阅 [Hazelcast Map](https://docs.hazelcast.com/imdg/4.2/data-structures/map)
+
+**type**
+
+imap 持久化的类型,目前仅支持 `hdfs`。
+
+**namespace**
+
+它用于区分不同业务的数据存储位置,如 OSS 存储桶名称。
+
+**clusterName**
+
+此参数主要用于集群隔离, 我们可以使用它来区分不同的集群,如 cluster1、cluster2,这也用于区分不同的业务。
+
+**fs.defaultFS**
+
+我们使用 hdfs api 读写文件,因此使用此存储需要提供 hdfs 配置。
+
+如果您使用 HDFS,可以像这样配置:
+
+```yaml
+map:
+ engine*:
+ map-store:
+ enabled: true
+ initial-mode: EAGER
+ factory-class-name: org.apache.seatunnel.engine.server.persistence.FileMapStoreFactory
+ properties:
+ type: hdfs
+ namespace: /tmp/seatunnel/imap
+ clusterName: seatunnel-cluster
+ storage.type: hdfs
+ fs.defaultFS: hdfs://localhost:9000
+```
+
+如果没有 HDFS,并且您的集群只有一个节点,您可以像这样配置使用本地文件:
+
+```yaml
+map:
+ engine*:
+ map-store:
+ enabled: true
+ initial-mode: EAGER
+ factory-class-name: org.apache.seatunnel.engine.server.persistence.FileMapStoreFactory
+ properties:
+ type: hdfs
+ namespace: /tmp/seatunnel/imap
+ clusterName: seatunnel-cluster
+ storage.type: hdfs
+ fs.defaultFS: file:///
+```
+
+如果您使用 OSS,可以像这样配置:
+
+```yaml
+map:
+ engine*:
+ map-store:
+ enabled: true
+ initial-mode: EAGER
+ factory-class-name: org.apache.seatunnel.engine.server.persistence.FileMapStoreFactory
+ properties:
+ type: hdfs
+ namespace: /tmp/seatunnel/imap
+ clusterName: seatunnel-cluster
+ storage.type: oss
+ block.size: block size(bytes)
+ oss.bucket: oss://bucket name/
+ fs.oss.accessKeyId: OSS access key id
+ fs.oss.accessKeySecret: OSS access key secret
+ fs.oss.endpoint: OSS endpoint
+```
+
+注意:使用OSS 时,确保 lib目录下有这几个jar.
+
+```
+aliyun-sdk-oss-3.13.2.jar
+hadoop-aliyun-3.3.6.jar
+jdom2-2.0.6.jar
+netty-buffer-4.1.89.Final.jar
+netty-common-4.1.89.Final.jar
+seatunnel-hadoop3-3.1.4-uber.jar
+```
+
+## 5. 配置 SeaTunnel Engine 网络服务
+
+所有 SeaTunnel Engine 网络相关的配置都在 `hazelcast-master.yaml`和`hazelcast-worker.yaml` 文件中.
+
+### 5.1 集群名称
+
+SeaTunnel Engine 节点使用 `cluster-name` 来确定另一个节点是否与自己在同一集群中。如果两个节点之间的集群名称不同,SeaTunnel 引擎将拒绝服务请求。
+
+### 5.2 网络
+
+基于 [Hazelcast](https://docs.hazelcast.com/imdg/4.1/clusters/discovery-mechanisms), 一个 SeaTunnel Engine 集群是由运行 SeaTunnel Engine 服务器的集群成员组成的网络。 集群成员自动加入一起形成集群。这种自动加入是通过集群成员使用的各种发现机制来相互发现的。
+
+请注意,集群形成后,集群成员之间的通信始终通过 TCP/IP 进行,无论使用的发现机制如何。
+
+SeaTunnel Engine 使用以下发现机制。
+
+#### TCP
+
+您可以将 SeaTunnel Engine 配置为完整的 TCP/IP 集群。有关配置详细信息,请参阅 [Discovering Members by TCP section](tcp.md)。
+
+在分离集群模式下,Master和Worker服务使用不同的端口。
+
+Master节点网络配置 `hazelcast-master.yaml`
+
+```yaml
+
+hazelcast:
+ cluster-name: seatunnel
+ network:
+ rest-api:
+ enabled: true
+ endpoint-groups:
+ CLUSTER_WRITE:
+ enabled: true
+ DATA:
+ enabled: true
+ join:
+ tcp-ip:
+ enabled: true
+ member-list:
+ - master-node-1:5801
+ - master-node-2:5801
+ - worker-node-1:5802
+ - worker-node-2:5802
+ port:
+ auto-increment: false
+ port: 5801
+ properties:
+ hazelcast.heartbeat.failuredetector.type: phi-accrual
+ hazelcast.heartbeat.interval.seconds: 2
+ hazelcast.max.no.heartbeat.seconds: 180
+ hazelcast.heartbeat.phiaccrual.failuredetector.threshold: 10
+ hazelcast.heartbeat.phiaccrual.failuredetector.sample.size: 200
+ hazelcast.heartbeat.phiaccrual.failuredetector.min.std.dev.millis: 100
+```
+
+Worker节点网络配置 `hazelcast-worker.yaml`
+
+```yaml
+
+hazelcast:
+ cluster-name: seatunnel
+ network:
+ join:
+ tcp-ip:
+ enabled: true
+ member-list:
+ - master-node-1:5801
+ - master-node-2:5801
+ - worker-node-1:5802
+ - worker-node-2:5802
+ port:
+ auto-increment: false
+ port: 5802
+ properties:
+ hazelcast.heartbeat.failuredetector.type: phi-accrual
+ hazelcast.heartbeat.interval.seconds: 2
+ hazelcast.max.no.heartbeat.seconds: 180
+ hazelcast.heartbeat.phiaccrual.failuredetector.threshold: 10
+ hazelcast.heartbeat.phiaccrual.failuredetector.sample.size: 200
+ hazelcast.heartbeat.phiaccrual.failuredetector.min.std.dev.millis: 100
+```
+
+TCP 是我们建议在独立 SeaTunnel Engine 集群中使用的方式。
+
+另一方面,Hazelcast 提供了一些其他的服务发现方法。有关详细信息,请参阅 [Hazelcast Network](https://docs.hazelcast.com/imdg/4.1/clusters/setting-up-clusters)
+
+## 6. 启动 SeaTunnel Engine Master 节点
+
+可以通过守护进程使用 `-d` 参数启动。
+
+```shell
+mkdir -p $SEATUNNEL_HOME/logs
+./bin/seatunnel-cluster.sh -d -r master
+```
+
+日志将写入 `$SEATUNNEL_HOME/logs/seatunnel-engine-master.log`
+
+## 7. 启动 SeaTunnel Engine Worker 节点
+
+可以通过守护进程使用 `-d` 参数启动。
+
+```shell
+mkdir -p $SEATUNNEL_HOME/logs
+./bin/seatunnel-cluster.sh -d -r worker
+```
+
+日志将写入 `$SEATUNNEL_HOME/logs/seatunnel-engine-worker.log`
+
+## 8. 安装 SeaTunnel Engine 客户端
+
+### 8.1 和服务端一样设置`SEATUNNEL_HOME`
+
+您可以通过添加 `/etc/profile.d/seatunnel.sh` 文件来配置 `SEATUNNEL_HOME` 。`/etc/profile.d/seatunnel.sh` 的内容如下:
+
+```
+export SEATUNNEL_HOME=${seatunnel install path}
+export PATH=$PATH:$SEATUNNEL_HOME/bin
+```
+
+### 8.2 配置 SeaTunnel Engine 客户端
+
+所有 SeaTunnel Engine 客户端的配置都在 `hazelcast-client.yaml` 里。
+
+**cluster-name**
+
+客户端必须与 SeaTunnel Engine 具有相同的 `cluster-name`。否则,SeaTunnel Engine 将拒绝客户端的请求。
+
+**network**
+
+需要将所有 SeaTunnel Engine Master节点的地址添加到这里。
+
+```yaml
+hazelcast-client:
+ cluster-name: seatunnel
+ properties:
+ hazelcast.logging.type: log4j2
+ network:
+ cluster-members:
+ - master-node-1:5801
+ - master-node-2:5801
+```
+
+## 9. 提交作业和管理作业
+
+现在集群部署完成了,您可以通过以下教程完成作业的提交和管理:[提交和管理作业](user-command.md)
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/seatunnel-engine/tcp.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/seatunnel-engine/tcp.md
new file mode 100644
index 000000000000..256bb01fe6b0
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/seatunnel-engine/tcp.md
@@ -0,0 +1,37 @@
+---
+
+sidebar_position: 10
+--------------------
+
+# TCP NetWork
+
+如果您的环境中多播不是首选的发现方式,那么您可以将 SeaTunnel 引擎配置为一个完整的 TCP/IP 集群。当您通过 TCP/IP 配置 SeaTunnel 引擎以发现成员时,您必须将所有或一部分成员的主机名和/或 IP 地址列为集群成员。您不必列出所有这些集群成员,但在新成员加入时,至少有一个列出的成员必须是活跃的。
+
+要配置您的 Hazelcast 作为一个完整的 TCP/IP 集群,请设置以下配置元素。有关 TCP/IP 发现配置元素的完整描述,请参见 tcp-ip 元素部分。
+
+- 将 tcp-ip 元素的 enabled 属性设置为 true。
+- 在 tcp-ip 元素内提供您的成员元素。
+
+以下是一个示例声明性配置。
+
+```yaml
+hazelcast:
+ network:
+ join:
+ tcp-ip:
+ enabled: true
+ member-list:
+ - machine1
+ - machine2
+ - machine3:5799
+ - 192.168.1.0-7
+ - 192.168.1.21
+```
+
+如上所示,您可以为成员元素提供 IP 地址或主机名。您还可以提供一个 IP 地址范围,例如 `192.168.1.0-7`.
+
+除了像上面展示的那样逐行提供成员外,您还可以选择使用 members 元素并写入逗号分隔的 IP 地址,如下所示。
+
+`192.168.1.0-7,192.168.1.21`
+
+如果您没有为成员提供端口,Hazelcast 会自动尝试端口 `5701`, `5702` 等。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/seatunnel-engine/user-command.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/seatunnel-engine/user-command.md
new file mode 100644
index 000000000000..d4d06d25a780
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/seatunnel-engine/user-command.md
@@ -0,0 +1,139 @@
+---
+
+sidebar_position: 12
+--------------------
+
+# 命令行工具
+
+SeaTunnel Engine 提供了一个命令行工具,用于管理 SeaTunnel Engine 的作业。您可以使用命令行工具提交、停止、暂停、恢复、删除作业,查看作业状态和监控指标等。
+
+可以通过如下命令获取命令行工具的帮助信息:
+
+```shell
+bin/seatunnel.sh -h
+```
+
+输出如下:
+
+```shell
+
+Usage: seatunnel.sh [options]
+ Options:
+ --async Run the job asynchronously, when the job
+ is submitted, the client will exit
+ (default: false)
+ -can, --cancel-job Cancel job by JobId
+ --check Whether check config (default: false)
+ -cj, --close-job Close client the task will also be closed
+ (default: true)
+ -cn, --cluster The name of cluster
+ -c, --config Config file
+ --decrypt Decrypt config file, When both --decrypt
+ and --encrypt are specified, only
+ --encrypt will take effect (default:
+ false)
+ -m, --master, -e, --deploy-mode SeaTunnel job submit master, support
+ [local, cluster] (default: cluster)
+ --encrypt Encrypt config file, when both --decrypt
+ and --encrypt are specified, only
+ --encrypt will take effect (default:
+ false)
+ --get_running_job_metrics Gets metrics for running jobs (default:
+ false)
+ -h, --help Show the usage message
+ -j, --job-id Get job status by JobId
+ -l, --list list job status (default: false)
+ --metrics Get job metrics by JobId
+ -n, --name SeaTunnel job name (default: SeaTunnel)
+ -r, --restore restore with savepoint by jobId
+ -s, --savepoint savepoint job by jobId
+ -i, --variable Variable substitution, such as -i
+ city=beijing, or -i date=20190318.We use
+ ',' as separator, when inside "", ',' are
+ treated as normal characters instead of
+ delimiters. (default: [])
+
+```
+
+## 提交作业
+
+```shell
+bin/seatunnel.sh --config $SEATUNNEL_HOME/config/v2.batch.config.template
+```
+
+**--async** 参数可以让作业在后台运行,当作业提交后,客户端会退出。
+
+```shell
+./bin/seatunnel.sh --config $SEATUNNEL_HOME/config/v2.batch.config.template --async
+```
+
+**-n** 或 **--name** 参数可以指定作业的名称
+
+```shell
+./bin/seatunnel.sh --config $SEATUNNEL_HOME/config/v2.batch.config.template --async -n myjob
+```
+
+## 查看作业列表
+
+```shell
+./bin/seatunnel.sh -l
+```
+
+该命令会输出所有当前集群中的作业列表(包含运行完成的历史作业和正在运行的作业)
+
+## 查看作业状态
+
+```shell
+./bin/seatunnel.sh -j <jobId>
+```
+
+该命令会输出指定作业的状态信息
+
+## 获取正在运行的作业监控信息
+
+```shell
+./bin/seatunnel.sh --get_running_job_metrics
+```
+
+该命令会输出正在运行的作业的监控信息
+
+## 获取指定作业监控信息
+
+--metrics 参数可以获取指定作业的监控信息
+
+```shell
+./bin/seatunnel.sh --metrics <jobId>
+```
+
+## 暂停作业
+
+```shell
+./bin/seatunnel.sh -s <jobId>
+```
+
+该命令会暂停指定作业,注意,只有开启了checkpoint的作业才支持暂停作业(实时同步作业默认开启checkpoint,批处理作业默认不开启checkpoint需要通过在 `env` 中配置checkpoint.interval来开启checkpoint)。
+
+暂停作业是以split为最小单位的,即暂停作业后,会等待当前正在运行的split运行完成后再暂停。任务恢复后,会从暂停的split继续运行。
+
+## 恢复作业
+
+```shell
+./bin/seatunnel.sh -r <jobId> -c $SEATUNNEL_HOME/config/v2.batch.config.template
+```
+
+该命令会恢复指定作业,注意,只有开启了checkpoint的作业才支持恢复作业(实时同步作业默认开启checkpoint,批处理作业默认不开启checkpoint需要通过在 `env` 中配置checkpoint.interval来开启checkpoint)。
+
+恢复作业需要指定jobId和作业的配置文件。
+
+运行失败的作业和通过seatunnel.sh -s <jobId>暂停的作业都可以通过该命令恢复。
+
+## 取消作业
+
+```shell
+./bin/seatunnel.sh -can <jobId>
+```
+
+该命令会取消指定作业,取消作业后,作业会被停止,作业的状态会变为`CANCELED`。
+
+被cancel的作业的所有断点信息都将被删除,无法通过seatunnel.sh -r <jobId>恢复。
+
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/start-v2/locally/deployment.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/start-v2/locally/deployment.md
new file mode 100644
index 000000000000..167abeaeaab9
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/start-v2/locally/deployment.md
@@ -0,0 +1,68 @@
+---
+
+sidebar_position: 1
+-------------------
+
+import Tabs from '@theme/Tabs';
+import TabItem from '@theme/TabItem';
+
+# 本地部署
+
+## 步骤 1: 准备工作
+
+在开始本地运行前,您需要确保您已经安装了SeaTunnel所需要的以下软件:
+
+* 安装[Java](https://www.java.com/en/download/) (Java 8 或 11, 其他高于Java 8的版本理论上也可以工作) 以及设置 `JAVA_HOME`。
+
+## 步骤 2: 下载 SeaTunnel
+
+进入[SeaTunnel下载页面](https://seatunnel.apache.org/download)下载最新版本的二进制安装包`seatunnel--bin.tar.gz`
+
+或者您也可以通过终端下载:
+
+```shell
+export version="2.3.7"
+wget "https://archive.apache.org/dist/seatunnel/${version}/apache-seatunnel-${version}-bin.tar.gz"
+tar -xzvf "apache-seatunnel-${version}-bin.tar.gz"
+```
+
+## 步骤 3: 下载连接器插件
+
+从2.2.0-beta版本开始,二进制包不再默认提供连接器依赖,因此在第一次使用时,您需要执行以下命令来安装连接器:(当然,您也可以从 [Apache Maven Repository](https://repo.maven.apache.org/maven2/org/apache/seatunnel/) 手动下载连接器,然后将其移动至`connectors/seatunnel`目录下)。
+
+```bash
+sh bin/install-plugin.sh
+```
+
+如果您需要指定的连接器版本,以2.3.7为例,您需要执行如下命令:
+
+```bash
+sh bin/install-plugin.sh 2.3.7
+```
+
+通常您并不需要所有的连接器插件,可以通过配置`config/plugin_config`来指定您所需要的插件,例如,您只需要`connector-console`插件,那么您可以修改plugin.properties配置文件如下:
+
+```plugin_config
+--seatunnel-connectors--
+connector-console
+--end--
+```
+
+如果您希望示例应用程序能正常工作,那么您需要添加以下插件:
+
+```plugin_config
+--seatunnel-connectors--
+connector-fake
+connector-console
+--end--
+```
+
+您可以在`${SEATUNNEL_HOME}/connectors/plugins-mapping.properties`下找到所有支持的连接器和相应的plugin_config配置名称。
+
+:::tip 提示
+
+如果您想通过手动下载连接器的方式来安装连接器插件,则需要下载您所需要的连接器插件即可,并将它们放在`${SEATUNNEL_HOME}/connectors/`目录下。
+
+:::
+
+现在,您已经完成了SeaTunnel部署。您可以按照[快速开始](quick-start-seatunnel-engine.md)来配置并运行数据同步作业了。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/start-v2/locally/quick-start-flink.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/start-v2/locally/quick-start-flink.md
new file mode 100644
index 000000000000..09189c91dcef
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/start-v2/locally/quick-start-flink.md
@@ -0,0 +1,111 @@
+---
+
+sidebar_position: 3
+-------------------
+
+# Flink Engine快速开始
+
+## 步骤 1: 部署SeaTunnel及连接器
+
+在开始前,请确保您已经按照[部署](deployment.md)中的描述下载并部署了SeaTunnel。
+
+## 步骤 2: 部署并配置Flink
+
+请先[下载Flink](https://flink.apache.org/downloads.html)(**需要版本 >= 1.12.0**)。更多信息您可以查看[入门: Standalone模式](https://nightlies.apache.org/flink/flink-docs-release-1.14/docs/deployment/resource-providers/standalone/overview/)
+
+**配置SeaTunnel**: 修改`config/seatunnel-env.sh`中的设置,将`FLINK_HOME`配置设置为Flink的部署目录。
+
+## 步骤 3: 添加作业配置文件来定义作业
+
+编辑`config/v2.streaming.conf.template`,它决定了SeaTunnel启动后数据输入、处理和输出的方式及逻辑。
+下面是配置文件的示例,它与上面提到的示例应用程序相同。
+
+```hocon
+env {
+ parallelism = 1
+ job.mode = "BATCH"
+}
+
+source {
+ FakeSource {
+ result_table_name = "fake"
+ row.num = 16
+ schema = {
+ fields {
+ name = "string"
+ age = "int"
+ }
+ }
+ }
+}
+
+transform {
+ FieldMapper {
+ source_table_name = "fake"
+ result_table_name = "fake1"
+ field_mapper = {
+ age = age
+ name = new_name
+ }
+ }
+}
+
+sink {
+ Console {
+ source_table_name = "fake1"
+ }
+}
+
+```
+
+关于配置的更多信息请查看[配置的基本概念](../../concept/config.md)
+
+## 步骤 4: 运行SeaTunnel应用程序
+
+您可以通过以下命令启动应用程序:
+
+Flink版本`1.12.x`到`1.14.x`
+
+```shell
+cd "apache-seatunnel-${version}"
+./bin/start-seatunnel-flink-13-connector-v2.sh --config ./config/v2.streaming.conf.template
+```
+
+Flink版本`1.15.x`到`1.16.x`
+
+```shell
+cd "apache-seatunnel-${version}"
+./bin/start-seatunnel-flink-15-connector-v2.sh --config ./config/v2.streaming.conf.template
+```
+
+**查看输出**: 当您运行该命令时,您可以在控制台中看到它的输出。您可以认为这是命令运行成功或失败的标志。
+
+SeaTunnel控制台将会打印一些如下日志信息:
+
+```shell
+fields : name, age
+types : STRING, INT
+row=1 : elWaB, 1984352560
+row=2 : uAtnp, 762961563
+row=3 : TQEIB, 2042675010
+row=4 : DcFjo, 593971283
+row=5 : SenEb, 2099913608
+row=6 : DHjkg, 1928005856
+row=7 : eScCM, 526029657
+row=8 : sgOeE, 600878991
+row=9 : gwdvw, 1951126920
+row=10 : nSiKE, 488708928
+row=11 : xubpl, 1420202810
+row=12 : rHZqb, 331185742
+row=13 : rciGD, 1112878259
+row=14 : qLhdI, 1457046294
+row=15 : ZTkRx, 1240668386
+row=16 : SGZCr, 94186144
+```
+
+## 此外
+
+现在,您已经快速浏览了SeaTunnel使用Flink引擎的方式,可以通过在[连接器](/docs/category/connector-v2)中找到SeaTunnel所支持的所有sources和sinks。
+如果您想要了解更多关于SeaTunnel运行在Flink上的信息,请参阅[基于Flink的SeaTunnel](../../other-engine/flink.md)。
+
+SeaTunnel有内置的`Zeta`引擎,它是作为SeaTunnel的默认引擎。您可以参考[快速开始](quick-start-seatunnel-engine.md)配置和运行数据同步作业。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/start-v2/locally/quick-start-seatunnel-engine.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/start-v2/locally/quick-start-seatunnel-engine.md
new file mode 100644
index 000000000000..cd7a9e88e3ea
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/start-v2/locally/quick-start-seatunnel-engine.md
@@ -0,0 +1,100 @@
+---
+
+sidebar_position: 2
+-------------------
+
+# SeaTunnel Engine快速开始
+
+## 步骤 1: 部署SeaTunnel及连接器
+
+在开始前,请确保您已经按照[部署](deployment.md)中的描述下载并部署了SeaTunnel。
+
+## 步骤 2: 添加作业配置文件来定义作业
+
+编辑`config/v2.batch.config.template`,它决定了当seatunnel启动后数据输入、处理和输出的方式及逻辑。
+下面是配置文件的示例,它与上面提到的示例应用程序相同。
+
+```hocon
+env {
+ parallelism = 1
+ job.mode = "BATCH"
+}
+
+source {
+ FakeSource {
+ result_table_name = "fake"
+ row.num = 16
+ schema = {
+ fields {
+ name = "string"
+ age = "int"
+ }
+ }
+ }
+}
+
+transform {
+ FieldMapper {
+ source_table_name = "fake"
+ result_table_name = "fake1"
+ field_mapper = {
+ age = age
+ name = new_name
+ }
+ }
+}
+
+sink {
+ Console {
+ source_table_name = "fake1"
+ }
+}
+
+```
+
+关于配置的更多信息请查看[配置的基本概念](../../concept/config.md)
+
+## 步骤 3: 运行SeaTunnel应用程序
+
+您可以通过以下命令启动应用程序:
+
+:::tip
+
+从2.3.1版本开始,seatunnel.sh中的-e参数被废弃,请改用-m参数。
+
+:::
+
+```shell
+cd "apache-seatunnel-${version}"
+./bin/seatunnel.sh --config ./config/v2.batch.config.template -m local
+
+```
+
+**查看输出**: 当您运行该命令时,您可以在控制台中看到它的输出。您可以认为这是命令运行成功或失败的标志。
+
+SeaTunnel控制台将会打印一些如下日志信息:
+
+```shell
+2022-12-19 11:01:45,417 INFO org.apache.seatunnel.connectors.seatunnel.console.sink.ConsoleSinkWriter - output rowType: name, age
+2022-12-19 11:01:46,489 INFO org.apache.seatunnel.connectors.seatunnel.console.sink.ConsoleSinkWriter - subtaskIndex=0 rowIndex=1: SeaTunnelRow#tableId=-1 SeaTunnelRow#kind=INSERT: CpiOd, 8520946
+2022-12-19 11:01:46,490 INFO org.apache.seatunnel.connectors.seatunnel.console.sink.ConsoleSinkWriter - subtaskIndex=0 rowIndex=2: SeaTunnelRow#tableId=-1 SeaTunnelRow#kind=INSERT: eQqTs, 1256802974
+2022-12-19 11:01:46,490 INFO org.apache.seatunnel.connectors.seatunnel.console.sink.ConsoleSinkWriter - subtaskIndex=0 rowIndex=3: SeaTunnelRow#tableId=-1 SeaTunnelRow#kind=INSERT: UsRgO, 2053193072
+2022-12-19 11:01:46,490 INFO org.apache.seatunnel.connectors.seatunnel.console.sink.ConsoleSinkWriter - subtaskIndex=0 rowIndex=4: SeaTunnelRow#tableId=-1 SeaTunnelRow#kind=INSERT: jDQJj, 1993016602
+2022-12-19 11:01:46,490 INFO org.apache.seatunnel.connectors.seatunnel.console.sink.ConsoleSinkWriter - subtaskIndex=0 rowIndex=5: SeaTunnelRow#tableId=-1 SeaTunnelRow#kind=INSERT: rqdKp, 1392682764
+2022-12-19 11:01:46,490 INFO org.apache.seatunnel.connectors.seatunnel.console.sink.ConsoleSinkWriter - subtaskIndex=0 rowIndex=6: SeaTunnelRow#tableId=-1 SeaTunnelRow#kind=INSERT: wCoWN, 986999925
+2022-12-19 11:01:46,490 INFO org.apache.seatunnel.connectors.seatunnel.console.sink.ConsoleSinkWriter - subtaskIndex=0 rowIndex=7: SeaTunnelRow#tableId=-1 SeaTunnelRow#kind=INSERT: qomTU, 72775247
+2022-12-19 11:01:46,490 INFO org.apache.seatunnel.connectors.seatunnel.console.sink.ConsoleSinkWriter - subtaskIndex=0 rowIndex=8: SeaTunnelRow#tableId=-1 SeaTunnelRow#kind=INSERT: jcqXR, 1074529204
+2022-12-19 11:01:46,490 INFO org.apache.seatunnel.connectors.seatunnel.console.sink.ConsoleSinkWriter - subtaskIndex=0 rowIndex=9: SeaTunnelRow#tableId=-1 SeaTunnelRow#kind=INSERT: AkWIO, 1961723427
+2022-12-19 11:01:46,490 INFO org.apache.seatunnel.connectors.seatunnel.console.sink.ConsoleSinkWriter - subtaskIndex=0 rowIndex=10: SeaTunnelRow#tableId=-1 SeaTunnelRow#kind=INSERT: hBoib, 929089763
+2022-12-19 11:01:46,490 INFO org.apache.seatunnel.connectors.seatunnel.console.sink.ConsoleSinkWriter - subtaskIndex=0 rowIndex=11: SeaTunnelRow#tableId=-1 SeaTunnelRow#kind=INSERT: GSvzm, 827085798
+2022-12-19 11:01:46,491 INFO org.apache.seatunnel.connectors.seatunnel.console.sink.ConsoleSinkWriter - subtaskIndex=0 rowIndex=12: SeaTunnelRow#tableId=-1 SeaTunnelRow#kind=INSERT: NNAYI, 94307133
+2022-12-19 11:01:46,491 INFO org.apache.seatunnel.connectors.seatunnel.console.sink.ConsoleSinkWriter - subtaskIndex=0 rowIndex=13: SeaTunnelRow#tableId=-1 SeaTunnelRow#kind=INSERT: EexFl, 1823689599
+2022-12-19 11:01:46,491 INFO org.apache.seatunnel.connectors.seatunnel.console.sink.ConsoleSinkWriter - subtaskIndex=0 rowIndex=14: SeaTunnelRow#tableId=-1 SeaTunnelRow#kind=INSERT: CBXUb, 869582787
+2022-12-19 11:01:46,491 INFO org.apache.seatunnel.connectors.seatunnel.console.sink.ConsoleSinkWriter - subtaskIndex=0 rowIndex=15: SeaTunnelRow#tableId=-1 SeaTunnelRow#kind=INSERT: Wbxtm, 1469371353
+2022-12-19 11:01:46,491 INFO org.apache.seatunnel.connectors.seatunnel.console.sink.ConsoleSinkWriter - subtaskIndex=0 rowIndex=16: SeaTunnelRow#tableId=-1 SeaTunnelRow#kind=INSERT: mIJDt, 995616438
+```
+
+## 此外
+
+现在,您已经快速浏览了SeaTunnel,可以通过[连接器](../../../en/connector-v2/source/FakeSource.md)来找到SeaTunnel所支持的所有sources和sinks。
+如果您想要了解更多关于信息,请参阅[SeaTunnel引擎](../../seatunnel-engine/about.md). 在这里你将了解如何部署SeaTunnel Engine的集群模式以及如何在集群模式下使用。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/start-v2/locally/quick-start-spark.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/start-v2/locally/quick-start-spark.md
new file mode 100644
index 000000000000..fbd0fa15fe55
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/start-v2/locally/quick-start-spark.md
@@ -0,0 +1,118 @@
+---
+
+sidebar_position: 4
+-------------------
+
+# Spark引擎快速开始
+
+## 步骤 1: 部署SeaTunnel及连接器
+
+在开始前,请确保您已经按照[部署](deployment.md)中的描述下载并部署了SeaTunnel。
+
+## 步骤 2: 部署并配置Spark
+
+请先[下载Spark](https://spark.apache.org/downloads.html)(**需要版本 >= 2.4.0**)。 更多信息您可以查看[入门: Standalone模式](https://spark.apache.org/docs/latest/spark-standalone.html#installing-spark-standalone-to-a-cluster)
+
+**配置SeaTunnel**: 修改`config/seatunnel-env.sh`中的设置,它是基于你的引擎在[部署](deployment.md)时的安装路径。
+将`SPARK_HOME`修改为Spark的部署目录。
+
+## 步骤 3: 添加作业配置文件来定义作业
+
+编辑`config/v2.streaming.conf.template`,它决定了当SeaTunnel启动后数据输入、处理和输出的方式及逻辑。
+下面是配置文件的示例,它与上面提到的示例应用程序相同。
+
+```hocon
+env {
+ parallelism = 1
+ job.mode = "BATCH"
+}
+
+source {
+ FakeSource {
+ result_table_name = "fake"
+ row.num = 16
+ schema = {
+ fields {
+ name = "string"
+ age = "int"
+ }
+ }
+ }
+}
+
+transform {
+ FieldMapper {
+ source_table_name = "fake"
+ result_table_name = "fake1"
+ field_mapper = {
+ age = age
+ name = new_name
+ }
+ }
+}
+
+sink {
+ Console {
+ source_table_name = "fake1"
+ }
+}
+
+```
+
+关于配置的更多信息请查看[配置的基本概念](../../concept/config.md)
+
+## 步骤 4: 运行SeaTunnel应用程序
+
+您可以通过以下命令启动应用程序:
+
+Spark 2.4.x
+
+```bash
+cd "apache-seatunnel-${version}"
+./bin/start-seatunnel-spark-2-connector-v2.sh \
+--master local[4] \
+--deploy-mode client \
+--config ./config/v2.streaming.conf.template
+```
+
+Spark 3.x.x
+
+```shell
+cd "apache-seatunnel-${version}"
+./bin/start-seatunnel-spark-3-connector-v2.sh \
+--master local[4] \
+--deploy-mode client \
+--config ./config/v2.streaming.conf.template
+```
+
+**查看输出**: 当您运行该命令时,您可以在控制台中看到它的输出。您可以认为这是命令运行成功或失败的标志。
+
+SeaTunnel控制台将会打印一些如下日志信息:
+
+```shell
+fields : name, age
+types : STRING, INT
+row=1 : elWaB, 1984352560
+row=2 : uAtnp, 762961563
+row=3 : TQEIB, 2042675010
+row=4 : DcFjo, 593971283
+row=5 : SenEb, 2099913608
+row=6 : DHjkg, 1928005856
+row=7 : eScCM, 526029657
+row=8 : sgOeE, 600878991
+row=9 : gwdvw, 1951126920
+row=10 : nSiKE, 488708928
+row=11 : xubpl, 1420202810
+row=12 : rHZqb, 331185742
+row=13 : rciGD, 1112878259
+row=14 : qLhdI, 1457046294
+row=15 : ZTkRx, 1240668386
+row=16 : SGZCr, 94186144
+```
+
+## 此外
+
+现在,您已经快速浏览了SeaTunnel使用Spark引擎的方式,可以通过在[连接器](/docs/category/connector-v2)中找到SeaTunnel所支持的所有source和sink。
+如果您想要了解更多关于SeaTunnel运行在Spark上的信息,请参阅[基于Spark的SeaTunnel](../../../en/other-engine/spark.md)。
+
+SeaTunnel有内置的`Zeta`引擎,它是作为SeaTunnel的默认引擎。您可以参考[快速开始](quick-start-seatunnel-engine.md)配置和运行数据同步作业。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/transform-v2/common-options.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/transform-v2/common-options.md
new file mode 100644
index 000000000000..9a756760f2cb
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/transform-v2/common-options.md
@@ -0,0 +1,23 @@
+# 转换常见选项
+
+> 源端连接器的常见参数
+
+| 参数名称 | 参数类型 | 是否必须 | 默认值 |
+|-------------------|--------|------|-----|
+| result_table_name | string | no | - |
+| source_table_name | string | no | - |
+
+### source_table_name [string]
+
+当未指定 `source_table_name` 时,当前插件在配置文件中处理由前一个插件输出的数据集 `(dataset)` ;
+
+当指定了 `source_table_name` 时,当前插件正在处理与该参数对应的数据集
+
+### result_table_name [string]
+
+当未指定 `result_table_name` 时,此插件处理的数据不会被注册为其他插件可以直接访问的数据集,也不会被称为临时表 `(table)`;
+
+当指定了 `result_table_name` 时,此插件处理的数据将被注册为其他插件可以直接访问的数据集 `(dataset)`,或者被称为临时表 `(table)`。在这里注册的数据集可以通过指定 `source_table_name` 被其他插件直接访问。
+
+## 示例
+
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/transform-v2/copy.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/transform-v2/copy.md
new file mode 100644
index 000000000000..a4ca5c613a74
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/transform-v2/copy.md
@@ -0,0 +1,65 @@
+# 复制
+
+> 复制转换插件
+
+## 描述
+
+将字段复制到一个新字段。
+
+## 属性
+
+| 名称 | 类型 | 是否必须 | 默认值 |
+|--------|--------|------|-----|
+| fields | Object | yes | |
+
+### fields [config]
+
+指定输入和输出之间的字段复制关系
+
+### 常见选项 [string]
+
+转换插件的常见参数, 请参考 [Transform Plugin](common-options.md) 了解详情。
+
+## 示例
+
+从源读取的数据是这样的一个表:
+
+| name | age | card |
+|----------|-----|------|
+| Joy Ding | 20 | 123 |
+| May Ding | 20 | 123 |
+| Kin Dom | 20 | 123 |
+| Joy Dom | 20 | 123 |
+
+想要将字段 `name`、`age` 复制到新的字段 `name1`、`name2`、`age1`,我们可以像这样添加 `Copy` 转换:
+
+```
+transform {
+ Copy {
+ source_table_name = "fake"
+ result_table_name = "fake1"
+ fields {
+ name1 = name
+ name2 = name
+ age1 = age
+ }
+ }
+}
+```
+
+那么结果表 `fake1` 中的数据将会像这样:
+
+| name | age | card | name1 | name2 | age1 |
+|----------|-----|------|----------|----------|------|
+| Joy Ding | 20 | 123 | Joy Ding | Joy Ding | 20 |
+| May Ding | 20 | 123 | May Ding | May Ding | 20 |
+| Kin Dom | 20 | 123 | Kin Dom | Kin Dom | 20 |
+| Joy Dom | 20 | 123 | Joy Dom | Joy Dom | 20 |
+
+## 更新日志
+
+### 新版本
+
+- 添加复制转换连接器
+- 支持将字段复制到新字段
+
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/transform-v2/dynamic-compile.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/transform-v2/dynamic-compile.md
new file mode 100644
index 000000000000..0fef5c253e3f
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/transform-v2/dynamic-compile.md
@@ -0,0 +1,171 @@
+# DynamicCompile
+
+> 动态编译插件
+
+## 描述
+
+:::tip
+
+特别申明
+您需要确保服务的安全性,并防止攻击者上传破坏性代码
+
+:::
+
+提供一种可编程的方式来处理行,允许用户自定义任何业务行为,甚至基于现有行字段作为参数的RPC请求,或者通过从其他数据源检索相关数据来扩展字段。为了区分业务,您还可以定义多个转换进行组合,
+如果转换过于复杂,可能会影响性能
+
+## 属性
+
+| name | type | required | default value |
+|------------------|--------|----------|---------------|
+| source_code | string | no | |
+| compile_language | Enum | yes | |
+| compile_pattern | Enum | no | SOURCE_CODE |
+| absolute_path | string | no | |
+
+### source_code [string]
+
+代码必须实现两个方法:getInlineOutputColumns和getInlineOutputFieldValues。getInlineOutputColumns确定要添加或转换的列,原始列结构可以从CatalogTable中获得
+GetInlineOutputFieldValues决定您的列值。您可以满足任何要求,甚至可以完成RPC请求以基于原始列获取新值
+如果有第三方依赖包,请将它们放在${SEATUNNEL_HOME}/lib中,如果您使用spark或flink,则需要将其放在相应服务的libs下。
+
+### common options [string]
+
+转换插件的常见参数, 请参考 [Transform Plugin](common-options.md) 了解详情。
+
+### compile_language [Enum]
+
+Java中的某些语法可能不受支持,请参阅https://github.com/janino-compiler/janino
+GROOVY,JAVA
+
+### compile_pattern [Enum]
+
+SOURCE_CODE,ABSOLUTE_PATH
+选择 SOURCE_CODE,SOURCE_CODE 属性必填;选择ABSOLUTE_PATH,ABSOLUTE_PATH属性必填。
+
+### absolute_path [string]
+
+服务器上Java或Groovy文件的绝对路径
+
+## Example
+
+源端数据读取的表格如下:
+
+| name | age | card |
+|----------|-----|------|
+| Joy Ding | 20 | 123 |
+| May Ding | 20 | 123 |
+| Kin Dom | 20 | 123 |
+| Joy Dom | 20 | 123 |
+
+```
+transform {
+ DynamicCompile {
+ source_table_name = "fake"
+ result_table_name = "groovy_out"
+ compile_language="GROOVY"
+ compile_pattern="SOURCE_CODE"
+ source_code="""
+ import org.apache.seatunnel.api.table.catalog.Column
+ import org.apache.seatunnel.transform.common.SeaTunnelRowAccessor
+ import org.apache.seatunnel.api.table.catalog.CatalogTable
+ import org.apache.seatunnel.api.table.catalog.PhysicalColumn;
+ import org.apache.seatunnel.api.table.type.*;
+ import java.util.ArrayList;
+ class demo {
+ public Column[] getInlineOutputColumns(CatalogTable inputCatalogTable) {
+ List columns = new ArrayList<>();
+ PhysicalColumn destColumn =
+ PhysicalColumn.of(
+ "compile_language",
+ BasicType.STRING_TYPE,
+ 10,
+ true,
+ "",
+ "");
+ columns.add(destColumn);
+ return columns.toArray(new Column[0]);
+ }
+ public Object[] getInlineOutputFieldValues(SeaTunnelRowAccessor inputRow) {
+ Object[] fieldValues = new Object[1];
+ fieldValues[0]="GROOVY"
+ return fieldValues;
+ }
+ };"""
+
+ }
+}
+
+transform {
+ DynamicCompile {
+ source_table_name = "fake"
+ result_table_name = "java_out"
+ compile_language="JAVA"
+ compile_pattern="SOURCE_CODE"
+ source_code="""
+ import org.apache.seatunnel.api.table.catalog.Column;
+ import org.apache.seatunnel.transform.common.SeaTunnelRowAccessor;
+ import org.apache.seatunnel.api.table.catalog.*;
+ import org.apache.seatunnel.api.table.type.*;
+ import java.util.ArrayList;
+ public Column[] getInlineOutputColumns(CatalogTable inputCatalogTable) {
+
+ ArrayList columns = new ArrayList();
+ PhysicalColumn destColumn =
+ PhysicalColumn.of(
+ "compile_language",
+ BasicType.STRING_TYPE,
+ 10,
+ true,
+ "",
+ "");
+ return new Column[]{
+ destColumn
+ };
+
+ }
+ public Object[] getInlineOutputFieldValues(SeaTunnelRowAccessor inputRow) {
+ Object[] fieldValues = new Object[1];
+ fieldValues[0]="JAVA";
+ return fieldValues;
+ }
+ """
+
+ }
+ }
+
+ transform {
+ DynamicCompile {
+ source_table_name = "fake"
+ result_table_name = "groovy_out"
+ compile_language="GROOVY"
+ compile_pattern="ABSOLUTE_PATH"
+ absolute_path="""/tmp/GroovyFile"""
+
+ }
+}
+```
+
+那么结果表 `groovy_out` 中的数据将会更新为:
+
+| name | age | card | compile_language |
+|----------|-----|------|------------------|
+| Joy Ding | 20 | 123 | GROOVY |
+| May Ding | 20 | 123 | GROOVY |
+| Kin Dom | 20 | 123 | GROOVY |
+| Joy Dom | 20 | 123 | GROOVY |
+
+那么结果表 `java_out` 中的数据将会更新为:
+
+| name | age | card | compile_language |
+|----------|-----|------|------------------|
+| Joy Ding | 20 | 123 | JAVA |
+| May Ding | 20 | 123 | JAVA |
+| Kin Dom | 20 | 123 | JAVA |
+| Joy Dom | 20 | 123 | JAVA |
+
+更多复杂例子可以参考
+https://github.com/apache/seatunnel/tree/dev/seatunnel-e2e/seatunnel-transforms-v2-e2e/seatunnel-transforms-v2-e2e-part-2/src/test/resources/dynamic_compile/conf
+
+## Changelog
+
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/transform-v2/field-mapper.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/transform-v2/field-mapper.md
new file mode 100644
index 000000000000..298d3fa72c92
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/transform-v2/field-mapper.md
@@ -0,0 +1,64 @@
+# 字段映射
+
+> 字段映射转换插件
+
+## 描述
+
+添加输入模式和输出模式映射
+
+## 属性
+
+| 名称 | 类型 | 是否必须 | 默认值 |
+|--------------|--------|------|-----|
+| field_mapper | Object | yes | |
+
+### field_mapper [config]
+
+指定输入和输出之间的字段映射关系
+
+### common options [config]
+
+转换插件的常见参数, 请参考 [Transform Plugin](common-options.md) 了解详情
+
+## 示例
+
+源端数据读取的表格如下:
+
+| id | name | age | card |
+|----|----------|-----|------|
+| 1 | Joy Ding | 20 | 123 |
+| 2 | May Ding | 20 | 123 |
+| 3 | Kin Dom | 20 | 123 |
+| 4 | Joy Dom | 20 | 123 |
+
+我们想要删除 `age` 字段,并更新字段顺序为 `id`、`card`、`name`,同时将 `name` 重命名为 `new_name`。我们可以像这样添加 `FieldMapper` 转换:
+
+```
+transform {
+ FieldMapper {
+ source_table_name = "fake"
+ result_table_name = "fake1"
+ field_mapper = {
+ id = id
+ card = card
+ name = new_name
+ }
+ }
+}
+```
+
+那么结果表 `fake1` 中的数据将会像这样:
+
+| id | card | new_name |
+|----|------|----------|
+| 1 | 123 | Joy Ding |
+| 2 | 123 | May Ding |
+| 3 | 123 | Kin Dom |
+| 4 | 123 | Joy Dom |
+
+## 更新日志
+
+### 新版本
+
+- 添加复制转换连接器
+
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/transform-v2/filter-rowkind.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/transform-v2/filter-rowkind.md
new file mode 100644
index 000000000000..74d2b2d5b1e1
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/transform-v2/filter-rowkind.md
@@ -0,0 +1,68 @@
+# 行类型过滤
+
+> 行类型转换插件
+
+## 描述
+
+按行类型过滤数据
+
+## 操作
+
+| 名称 | 类型 | 是否必须 | 默认值 |
+|---------------|-------|------|-----|
+| include_kinds | array | yes | |
+| exclude_kinds | array | yes | |
+
+### include_kinds [array]
+
+要包含的行类型
+
+### exclude_kinds [array]
+
+要排除的行类型。
+
+您只能配置 `include_kinds` 和 `exclude_kinds` 中的一个。
+
+### common options [string]
+
+转换插件的常见参数, 请参考 [Transform Plugin](common-options.md) 了解详情
+
+## 示例
+
+FakeSource 生成的数据的行类型是 `INSERT`。如果我们使用 `FilterRowKink` 转换并排除 `INSERT` 数据,我们将不会向接收器写入任何行。
+
+```yaml
+
+env {
+ job.mode = "BATCH"
+}
+
+source {
+ FakeSource {
+ result_table_name = "fake"
+ row.num = 100
+ schema = {
+ fields {
+ id = "int"
+ name = "string"
+ age = "int"
+ }
+ }
+ }
+}
+
+transform {
+ FilterRowKind {
+ source_table_name = "fake"
+ result_table_name = "fake1"
+ exclude_kinds = ["INSERT"]
+ }
+}
+
+sink {
+ Console {
+ source_table_name = "fake1"
+ }
+}
+```
+
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/transform-v2/filter.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/transform-v2/filter.md
new file mode 100644
index 000000000000..1f02c999a375
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/transform-v2/filter.md
@@ -0,0 +1,79 @@
+# 过滤器
+
+> 过滤器转换插件
+
+## 描述
+
+过滤字段
+
+## 属性
+
+| 名称 | 类型 | 是否必须 | 默认值 |
+|----------------|-------|------|-----|
+| include_fields | array | no | |
+| exclude_fields | array | no | |
+
+### include_fields [array]
+
+需要保留的字段列表。不在列表中的字段将被删除。
+
+### exclude_fields [array]
+
+需要删除的字段列表。不在列表中的字段将被保留。
+
+注意,`include_fields` 和 `exclude_fields` 两个属性中,必须设置一个且只能设置一个
+
+### common options [string]
+
+转换插件的常见参数, 请参考 [Transform Plugin](common-options.md) 了解详情
+
+## 示例
+
+源端数据读取的表格如下:
+
+| name | age | card |
+|----------|-----|------|
+| Joy Ding | 20 | 123 |
+| May Ding | 20 | 123 |
+| Kin Dom | 20 | 123 |
+| Joy Dom | 20 | 123 |
+
+我们想要保留字段 `name`, `card`,我们可以像这样添加 `Filter` 转换:
+
+```
+transform {
+ Filter {
+ source_table_name = "fake"
+ result_table_name = "fake1"
+ include_fields = [name, card]
+ }
+}
+```
+
+我们也可以通过删除字段 `age` 来实现, 我们可以添加一个 `Filter` 转换,并设置exclude_fields:
+
+```
+transform {
+ Filter {
+ source_table_name = "fake"
+ result_table_name = "fake1"
+ exclude_fields = [age]
+ }
+}
+```
+
+那么结果表 `fake1` 中的数据将会像这样:
+
+| name | card |
+|----------|------|
+| Joy Ding | 123 |
+| May Ding | 123 |
+| Kin Dom | 123 |
+| Joy Dom | 123 |
+
+## 更新日志
+
+### 新版本
+
+- 添加过滤转器换连接器
+
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/transform-v2/jsonpath.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/transform-v2/jsonpath.md
new file mode 100644
index 000000000000..449f0f6a77f1
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/transform-v2/jsonpath.md
@@ -0,0 +1,190 @@
+# JsonPath
+
+> JSONPath 转换插件
+
+## 描述
+
+> 支持使用 JSONPath 选择数据
+
+## 属性
+
+| 名称 | 类型 | 是否必须 | 默认值 |
+|---------|-------|------|-----|
+| Columns | Array | Yes | |
+
+### common options [string]
+
+转换插件的常见参数, 请参考 [Transform Plugin](common-options.md) 了解详情
+
+### fields[array]
+
+#### 属性
+
+| 名称 | 类型 | 是否必须 | 默认值 |
+|------------|--------|------|--------|
+| src_field | String | Yes | |
+| dest_field | String | Yes | |
+| path | String | Yes | |
+| dest_type | String | No | String |
+
+#### src_field
+
+> 要解析的 JSON 源字段
+
+支持的Seatunnel数据类型
+
+* STRING
+* BYTES
+* ARRAY
+* MAP
+* ROW
+
+#### dest_field
+
+> 使用 JSONPath 后的输出字段
+
+#### dest_type
+
+> 目标字段的类型
+
+#### path
+
+> Jsonpath
+
+## 读取 JSON 示例
+
+从源读取的数据是像这样的 JSON
+
+```json
+{
+ "data": {
+ "c_string": "this is a string",
+ "c_boolean": true,
+ "c_integer": 42,
+ "c_float": 3.14,
+ "c_double": 3.14,
+ "c_decimal": 10.55,
+ "c_date": "2023-10-29",
+ "c_datetime": "16:12:43.459",
+ "c_array":["item1", "item2", "item3"]
+ }
+}
+```
+
+假设我们想要使用 JsonPath 提取属性。
+
+```json
+transform {
+ JsonPath {
+ source_table_name = "fake"
+ result_table_name = "fake1"
+ columns = [
+ {
+ "src_field" = "data"
+ "path" = "$.data.c_string"
+ "dest_field" = "c1_string"
+ },
+ {
+ "src_field" = "data"
+ "path" = "$.data.c_boolean"
+ "dest_field" = "c1_boolean"
+ "dest_type" = "boolean"
+ },
+ {
+ "src_field" = "data"
+ "path" = "$.data.c_integer"
+ "dest_field" = "c1_integer"
+ "dest_type" = "int"
+ },
+ {
+ "src_field" = "data"
+ "path" = "$.data.c_float"
+ "dest_field" = "c1_float"
+ "dest_type" = "float"
+ },
+ {
+ "src_field" = "data"
+ "path" = "$.data.c_double"
+ "dest_field" = "c1_double"
+ "dest_type" = "double"
+ },
+ {
+ "src_field" = "data"
+ "path" = "$.data.c_decimal"
+ "dest_field" = "c1_decimal"
+ "dest_type" = "decimal(4,2)"
+ },
+ {
+ "src_field" = "data"
+ "path" = "$.data.c_date"
+ "dest_field" = "c1_date"
+ "dest_type" = "date"
+ },
+ {
+ "src_field" = "data"
+ "path" = "$.data.c_datetime"
+ "dest_field" = "c1_datetime"
+ "dest_type" = "time"
+ },
+ {
+ "src_field" = "data"
+ "path" = "$.data.c_array"
+ "dest_field" = "c1_array"
+ "dest_type" = "array"
+ }
+ ]
+ }
+}
+```
+
+那么数据结果表 `fake1` 将会像这样
+
+| data | c1_string | c1_boolean | c1_integer | c1_float | c1_double | c1_decimal | c1_date | c1_datetime | c1_array |
+|------------------------------|------------------|------------|------------|----------|-----------|------------|------------|--------------|-----------------------------|
+| too much content not to show | this is a string | true | 42 | 3.14 | 3.14 | 10.55 | 2023-10-29 | 16:12:43.459 | ["item1", "item2", "item3"] |
+
+## 读取 SeatunnelRow 示例
+
+假设数据行中的一列的类型是 SeatunnelRow,列的名称为 col
+
+
+SeatunnelRow(col) | other |
+name | age | .... |
+a | 18 | .... |
+
+
+JsonPath 转换将 seatunnel 的值转换为一个数组。
+
+```json
+transform {
+ JsonPath {
+ source_table_name = "fake"
+ result_table_name = "fake1"
+ columns = [
+ {
+ "src_field" = "col"
+ "path" = "$[0]"
+ "dest_field" = "name"
+ "dest_type" = "string"
+ },
+ {
+ "src_field" = "col"
+ "path" = "$[1]"
+ "dest_field" = "age"
+ "dest_type" = "int"
+ }
+ ]
+ }
+}
+```
+
+那么数据结果表 `fake1` 将会像这样:
+
+| name | age | col | other |
+|------|-----|----------|-------|
+| a | 18 | ["a",18] | ... |
+
+## 更新日志
+
+* 添加 JsonPath 转换
+
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/transform-v2/llm.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/transform-v2/llm.md
new file mode 100644
index 000000000000..acd3245b8eb4
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/transform-v2/llm.md
@@ -0,0 +1,120 @@
+# LLM
+
+> LLM 转换插件
+
+## 描述
+
+利用大型语言模型 (LLM) 的强大功能来处理数据,方法是将数据发送到 LLM 并接收生成的结果。利用 LLM 的功能来标记、清理、丰富数据、执行数据推理等。
+
+## 属性
+
+| 名称 | 类型 | 是否必须 | 默认值 |
+|------------------|--------|------|--------------------------------------------|
+| model_provider | enum | yes | |
+| output_data_type | enum | no | String |
+| prompt | string | yes | |
+| model | string | yes | |
+| api_key | string | yes | |
+| openai.api_path | string | no | https://api.openai.com/v1/chat/completions |
+
+### model_provider
+
+要使用的模型提供者。可用选项为:
+OPENAI
+
+### output_data_type
+
+输出数据的数据类型。可用选项为:
+STRING,INT,BIGINT,DOUBLE,BOOLEAN.
+默认值为 STRING。
+
+### prompt
+
+发送到 LLM 的提示。此参数定义 LLM 将如何处理和返回数据,例如:
+
+从源读取的数据是这样的表格:
+
+| name | age |
+|---------------|-----|
+| Jia Fan | 20 |
+| Hailin Wang | 20 |
+| Eric | 20 |
+| Guangdong Liu | 20 |
+
+我们可以使用以下提示:
+
+```
+Determine whether someone is Chinese or American by their name
+```
+
+这将返回:
+
+| name | age | llm_output |
+|---------------|-----|------------|
+| Jia Fan | 20 | Chinese |
+| Hailin Wang | 20 | Chinese |
+| Eric | 20 | American |
+| Guangdong Liu | 20 | Chinese |
+
+### model
+
+要使用的模型。不同的模型提供者有不同的模型。例如,OpenAI 模型可以是 `gpt-4o-mini`。
+如果使用 OpenAI 模型,请参考 https://platform.openai.com/docs/models/model-endpoint-compatibility 文档的`/v1/chat/completions` 端点。
+
+### api_key
+
+用于模型提供者的 API 密钥。
+如果使用 OpenAI 模型,请参考 https://platform.openai.com/docs/api-reference/api-keys 文档的如何获取 API 密钥。
+
+### openai.api_path
+
+用于 OpenAI 模型提供者的 API 路径。在大多数情况下,您不需要更改此配置。如果使用 API 代理的服务,您可能需要将其配置为代理的 API 地址。
+
+### common options [string]
+
+转换插件的常见参数, 请参考 [Transform Plugin](common-options.md) 了解详情
+
+## 示例
+
+通过 LLM 确定用户所在的国家。
+
+```hocon
+env {
+ parallelism = 1
+ job.mode = "BATCH"
+}
+
+source {
+ FakeSource {
+ row.num = 5
+ schema = {
+ fields {
+ id = "int"
+ name = "string"
+ }
+ }
+ rows = [
+ {fields = [1, "Jia Fan"], kind = INSERT}
+ {fields = [2, "Hailin Wang"], kind = INSERT}
+ {fields = [3, "Tomas"], kind = INSERT}
+ {fields = [4, "Eric"], kind = INSERT}
+ {fields = [5, "Guangdong Liu"], kind = INSERT}
+ ]
+ }
+}
+
+transform {
+ LLM {
+ model_provider = OPENAI
+ model = gpt-4o-mini
+ api_key = sk-xxx
+ prompt = "Determine whether someone is Chinese or American by their name"
+ }
+}
+
+sink {
+ console {
+ }
+}
+```
+
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/transform-v2/replace.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/transform-v2/replace.md
new file mode 100644
index 000000000000..99eef89a1ab1
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/transform-v2/replace.md
@@ -0,0 +1,121 @@
+# 替换
+
+> 替换转换插件
+
+## 描述
+
+检查给定字段中的字符串值,并用给定的替换项替换与给定字符串字面量或正则表达式匹配的字符串值的子字符串。
+
+## 属性
+
+| 名称 | 类型 | 是否必须 | 默认值 |
+|---------------|---------|------|-------|
+| replace_field | string | yes | |
+| pattern | string | yes | - |
+| replacement | string | yes | - |
+| is_regex | boolean | no | false |
+| replace_first | boolean | no | false |
+
+### replace_field [string]
+
+需要替换的字段
+
+### pattern [string]
+
+将被替换的旧字符串
+
+### replacement [string]
+
+用于替换的新字符串
+
+### is_regex [boolean]
+
+使用正则表达式进行字符串匹配
+
+### replace_first [boolean]
+
+是否替换第一个匹配字符串。仅在 `is_regex = true` 时使用。
+
+### common options [string]
+
+转换插件的常见参数, 请参考 [Transform Plugin](common-options.md) 了解详情
+
+## 示例
+
+源端数据读取的表格如下:
+
+| name | age | card |
+|----------|-----|------|
+| Joy Ding | 20 | 123 |
+| May Ding | 20 | 123 |
+| Kin Dom | 20 | 123 |
+| Joy Dom | 20 | 123 |
+
+我们想要将 `name` 字段中的字符 ``替换为 `_`。然后我们可以添加一个 `Replace` 转换,像这样:
+
+```
+transform {
+ Replace {
+ source_table_name = "fake"
+ result_table_name = "fake1"
+ replace_field = "name"
+ pattern = " "
+ replacement = "_"
+ is_regex = true
+ }
+}
+```
+
+那么结果表 `fake1` 中的数据将会更新为:
+
+| name | age | card |
+|----------|-----|------|
+| Joy_Ding | 20 | 123 |
+| May_Ding | 20 | 123 |
+| Kin_Dom | 20 | 123 |
+| Joy_Dom | 20 | 123 |
+
+## 作业配置示例
+
+```
+env {
+ job.mode = "BATCH"
+}
+
+source {
+ FakeSource {
+ result_table_name = "fake"
+ row.num = 100
+ schema = {
+ fields {
+ id = "int"
+ name = "string"
+ }
+ }
+ }
+}
+
+transform {
+ Replace {
+ source_table_name = "fake"
+ result_table_name = "fake1"
+ replace_field = "name"
+ pattern = ".+"
+ replacement = "b"
+ is_regex = true
+ }
+}
+
+sink {
+ Console {
+ source_table_name = "fake1"
+ }
+}
+```
+
+## 更新日志
+
+### 新版本
+
+- 添加替换转换连接器
+
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/transform-v2/split.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/transform-v2/split.md
new file mode 100644
index 000000000000..ef8c3f585403
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/transform-v2/split.md
@@ -0,0 +1,72 @@
+# 拆分
+
+> 拆分转换插件
+
+## 描述
+
+拆分一个字段为多个字段。
+
+## 属性
+
+| 名称 | 类型 | 是否必须 | 默认值 |
+|---------------|--------|------|-----|
+| separator | string | yes | |
+| split_field | string | yes | |
+| output_fields | array | yes | |
+
+### separator [string]
+
+拆分内容的分隔符
+
+### split_field[string]
+
+需要拆分的字段
+
+### output_fields[array]
+
+拆分后的结果字段
+
+### common options [string]
+
+转换插件的常见参数, 请参考 [Transform Plugin](common-options.md) 了解详情
+
+## 示例
+
+源端数据读取的表格如下:
+
+| name | age | card |
+|----------|-----|------|
+| Joy Ding | 20 | 123 |
+| May Ding | 20 | 123 |
+| Kin Dom | 20 | 123 |
+| Joy Dom | 20 | 123 |
+
+我们想要将 `name` 字段拆分为 `first_name` 和 `second_name`,我们可以像这样添加 `Split` 转换:
+
+```
+transform {
+ Split {
+ source_table_name = "fake"
+ result_table_name = "fake1"
+ separator = " "
+ split_field = "name"
+ output_fields = [first_name, second_name]
+ }
+}
+```
+
+那么结果表 `fake1` 中的数据将会像这样:
+
+| name | age | card | first_name | last_name |
+|----------|-----|------|------------|-----------|
+| Joy Ding | 20 | 123 | Joy | Ding |
+| May Ding | 20 | 123 | May | Ding |
+| Kin Dom | 20 | 123 | Kin | Dom |
+| Joy Dom | 20 | 123 | Joy | Dom |
+
+## 更新日志
+
+### 新版本
+
+- 添加拆分转换连接器
+
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/transform-v2/sql-functions.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/transform-v2/sql-functions.md
new file mode 100644
index 000000000000..57c440a39b3b
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/transform-v2/sql-functions.md
@@ -0,0 +1,966 @@
+# SQL函数
+
+> SQL函数转换插件功能
+
+## 字符串函数
+
+### ASCII
+
+```ASCII(string)```
+
+返回字符串中第一个字符的ASCII值。此方法返回一个整数。
+
+示例:
+
+ASCII('Hi')
+
+### BIT_LENGTH
+
+```BIT_LENGTH(bytes)```
+
+返回二进制字符串中的位数。该方法返回一个长整型
+
+示例:
+
+BIT_LENGTH(NAME)
+
+### CHAR_LENGTH / LENGTH
+
+```CHAR_LENGTH | LENGTH (string)```
+
+这个方法返回一个字符串中字符的数量,返回类型为 long。
+
+示例:
+
+CHAR_LENGTH(NAME)
+
+### OCTET_LENGTH
+
+```OCTET_LENGTH(bytes)```
+
+返回二进制字符串中字节的数量。此方法返回一个 long 类型的值。
+
+示例:
+
+OCTET_LENGTH(NAME)
+
+### CHAR / CHR
+
+```CHAR | CHR (int)```
+
+返回表示ASCII值的字符。该方法返回一个字符串。
+
+示例:
+
+CHAR(65)
+
+### CONCAT
+
+```CONCAT(string, string[, string ...] )```
+
+组合字符串。与运算符 `||` 不同,**NULL** 参数会被忽略,不会导致结果变为 **NULL**。如果所有参数都是 NULL,则结果是一个空字符串。该方法返回一个字符串。
+
+示例:
+
+CONCAT(NAME, '_')
+
+### CONCAT_WS
+
+```CONCAT_WS(separatorString, string, string[, string ...] )```
+
+使用分隔符组合字符串。如果分隔符为 **NULL**,则会被视为空字符串。其他 **NULL** 参数会被忽略。剩余的 **非NULL** 参数(如果有)将用指定的分隔符连接起来。如果没有剩余参数,则结果是一个空字符串。该方法返回一个字符串。
+
+示例:
+
+CONCAT_WS(',', NAME, '_')
+
+### HEXTORAW
+
+```HEXTORAW(string)```
+
+将字符串的十六进制表示转换为字符串。每个字符串字符使用4个十六进制字符。
+
+示例:
+
+HEXTORAW(DATA)
+
+### RAWTOHEX
+
+```RAWTOHEX(string)```
+
+```RAWTOHEX(bytes)```
+
+将字符串或字节转换为十六进制表示。每个字符串字符使用4个十六进制字符。该方法返回一个字符串。
+
+示例:
+
+RAWTOHEX(DATA)
+
+### INSERT
+
+```INSERT(originalString, startInt, lengthInt, addString)```
+
+在原始字符串的指定起始位置插入额外的字符串。长度参数指定在原始字符串的起始位置删除的字符数。该方法返回一个字符串。
+
+示例:
+
+INSERT(NAME, 1, 1, ' ')
+
+### LOWER / LCASE
+
+```LOWER | LCASE (string)```
+
+将字符串转换为小写形式。
+
+示例:
+
+LOWER(NAME)
+
+### UPPER / UCASE
+
+```UPPER | UCASE (string)```
+
+将字符串转换为大写形式。
+
+示例:
+
+UPPER(NAME)
+
+### LEFT
+
+```LEFT(string, int)```
+
+返回最左边的一定数量的字符。
+
+示例:
+
+LEFT(NAME, 3)
+
+### RIGHT
+
+```RIGHT(string, int)```
+
+返回最右边的一定数量的字符。
+
+示例:
+
+RIGHT(NAME, 3)
+
+### LOCATE / INSTR / POSITION
+
+```LOCATE(searchString, string[, startInit])```
+
+```INSTR(string, searchString[, startInit])```
+
+```POSITION(searchString, string)```
+
+返回字符串中搜索字符串的位置。如果使用了起始位置参数,则忽略它之前的字符。如果位置参数是负数,则返回最右边的位置。如果未找到搜索字符串,则返回 0。请注意,即使参数不区分大小写,此函数也区分大小写。
+
+示例:
+
+LOCATE('.', NAME)
+
+### LPAD
+
+```LPAD(string ,int[, string])```
+
+将字符串左侧填充到指定的长度。如果长度比字符串短,则字符串将在末尾被截断。如果未设置填充字符串,则使用空格填充。
+
+示例:
+
+LPAD(AMOUNT, 10, '*')
+
+### RPAD
+
+```RPAD(string, int[, string])```
+
+将字符串右侧填充到指定的长度。如果长度比字符串短,则字符串将被截断。如果未设置填充字符串,则使用空格填充。
+
+示例:
+
+RPAD(TEXT, 10, '-')
+
+### LTRIM
+
+```LTRIM(string[, characterToTrimString])```
+
+移除字符串中所有前导空格或其他指定的字符。
+
+此函数已被弃用,请使用 TRIM 替代。
+
+示例:
+
+LTRIM(NAME)
+
+### RTRIM
+
+```RTRIM(string[, characterToTrimString])```
+
+移除字符串中所有尾随空格或其他指定的字符。
+
+此函数已被弃用,请使用 TRIM 替代。
+
+示例:
+
+RTRIM(NAME)
+
+### TRIM
+
+```TRIM(string[, characterToTrimString])```
+
+移除字符串中所有前导空格或其他指定的字符。
+
+此函数已被弃用,请使用 TRIM 替代。
+
+示例:
+
+LTRIM(NAME)
+
+### REGEXP_REPLACE
+
+```REGEXP_REPLACE(inputString, regexString, replacementString[, flagsString])```
+
+替换与正则表达式匹配的每个子字符串。详情请参阅 Java String.replaceAll() 方法。如果任何参数为 null(除了可选的 flagsString 参数),则结果为 null。
+
+标志值限于 'i'、'c'、'n'、'm'。其他符号会引发异常。可以在一个 flagsString 参数中使用多个符号(例如 'im')。后面的标志会覆盖前面的标志,例如 'ic' 等同于区分大小写匹配 'c'。
+
+'i' 启用不区分大小写匹配(Pattern.CASE_INSENSITIVE)
+
+'c' 禁用不区分大小写匹配(Pattern.CASE_INSENSITIVE)
+
+'n' 允许句点匹配换行符(Pattern.DOTALL)
+
+'m' 启用多行模式(Pattern.MULTILINE)
+
+示例:
+
+REGEXP_REPLACE('Hello World', ' +', ' ')
+REGEXP_REPLACE('Hello WWWWorld', 'w+', 'W', 'i')
+
+### REGEXP_LIKE
+
+```REGEXP_LIKE(inputString, regexString[, flagsString])```
+
+将字符串与正则表达式匹配。详情请参阅 Java Matcher.find() 方法。如果任何参数为 null(除了可选的 flagsString 参数),则结果为 null。
+
+标志值限于 'i'、'c'、'n'、'm'。其他符号会引发异常。可以在一个 flagsString 参数中使用多个符号(例如 'im')。后面的标志会覆盖前面的标志,例如 'ic' 等同于区分大小写匹配 'c'。
+
+'i' 启用不区分大小写匹配(Pattern.CASE_INSENSITIVE)
+
+'c' 禁用不区分大小写匹配(Pattern.CASE_INSENSITIVE)
+
+'n' 允许句点匹配换行符(Pattern.DOTALL)
+
+'m' 启用多行模式(Pattern.MULTILINE)
+
+示例:
+
+REGEXP_LIKE('Hello World', '[A-Z ]*', 'i')
+
+### REGEXP_SUBSTR
+
+```REGEXP_SUBSTR(inputString, regexString[, positionInt, occurrenceInt, flagsString, groupInt])```
+
+将字符串与正则表达式匹配,并返回匹配的子字符串。详情请参阅 java.util.regex.Pattern 和相关功能。
+
+参数 position 指定匹配应该从 inputString 的哪里开始。Occurrence 指示在 inputString 中搜索 pattern 的哪个出现。
+
+标志值限于 'i'、'c'、'n'、'm'。其他符号会引发异常。可以在一个 flagsString 参数中使用多个符号(例如 'im')。后面的标志会覆盖前面的标志,例如 'ic' 等同于区分大小写匹配 'c'。
+
+'i' 启用不区分大小写匹配(Pattern.CASE_INSENSITIVE)
+
+'c' 禁用不区分大小写匹配(Pattern.CASE_INSENSITIVE)
+
+'n' 允许句点匹配换行符(Pattern.DOTALL)
+
+'m' 启用多行模式(Pattern.MULTILINE)
+
+如果模式具有组,则可以使用 group 参数指定要返回的组。
+
+示例:
+
+REGEXP_SUBSTR('2020-10-01', '\d{4}')
+REGEXP_SUBSTR('2020-10-01', '(\d{4})-(\d{2})-(\d{2})', 1, 1, NULL, 2)
+
+### REPEAT
+
+```REPEAT(string, int)```
+
+Returns a string repeated some number of times.
+
+示例:
+
+REPEAT(NAME || ' ', 10)
+
+### REPLACE
+
+```REPLACE(string, searchString[, replacementString])```
+
+在文本中替换所有出现的搜索字符串为另一个字符串。如果没有指定替换字符串,则从原始字符串中移除搜索字符串。如果任何参数为 null,则结果为 null。
+
+示例:
+
+REPLACE(NAME, ' ')
+
+### SOUNDEX
+
+```SOUNDEX(string)```
+
+表示字符串发音。此方法返回一个字符串,如果参数为 null,则返回 null。有关更多信息,请参阅 https://en.wikipedia.org/wiki/Soundex 。
+
+示例:
+
+SOUNDEX(NAME)
+
+### SPACE
+
+```SPACE(int)```
+
+返回由一定数量的空格组成的字符串。
+
+示例:
+
+SPACE(80)
+
+### SUBSTRING / SUBSTR
+
+```SUBSTRING | SUBSTR (string, startInt[, lengthInt ])```
+
+返回从指定位置开始的字符串的子串。如果起始索引为负数,则相对于字符串的末尾计算起始索引。长度是可选的。
+
+示例:
+
+CALL SUBSTRING('[Hello]', 2);
+CALL SUBSTRING('hour', 3, 2);
+
+### TO_CHAR
+
+```TO_CHAR(value[, formatString])```
+
+Oracle 兼容的 TO_CHAR 函数可用于格式化时间戳、数字或文本。
+
+示例:
+
+CALL TO_CHAR(SYS_TIME, 'yyyy-MM-dd HH:mm:ss')
+
+### TRANSLATE
+
+```TRANSLATE(value, searchString, replacementString)```
+
+Oracle 兼容的 TRANSLATE 函数用于将字符串中的一系列字符替换为另一组字符。
+
+示例:
+
+CALL TRANSLATE('Hello world', 'eo', 'EO')
+
+## Numeric Functions
+
+### ABS
+
+```ABS(numeric)```
+
+返回指定值的绝对值。返回的值与参数的数据类型相同。
+
+请注意,TINYINT、SMALLINT、INT 和 BIGINT 数据类型无法表示它们的最小负值的绝对值,因为它们的负值比正值多。例如,对于 INT 数据类型,允许的值范围是从 -2147483648 到 2147483647。ABS(-2147483648) 应该是 2147483648,但是这个值对于这个数据类型是不允许的。这会导致异常。为了避免这种情况,请将此函数的参数转换为更高的数据类型。
+
+示例:
+
+ABS(I)
+
+### ACOS
+
+```ACOS(numeric)```
+
+计算反余弦值。另请参阅 Java Math.acos。该方法返回一个双精度浮点数。
+
+示例:
+
+ACOS(D)
+
+### ASIN
+
+```ASIN(numeric)```
+
+计算反正弦值。另请参阅 Java Math.asin。该方法返回一个双精度浮点数。
+
+示例:
+
+ASIN(D)
+
+### ATAN
+
+```ATAN(numeric)```
+
+计算反正切值。另请参阅 Java Math.atan。该方法返回一个双精度浮点数。
+
+示例:
+
+ATAN(D)
+
+### COS
+
+```COS(numeric)```
+
+计算三角余弦值。另请参阅 Java Math.cos。该方法返回一个双精度浮点数。
+
+示例:
+
+COS(ANGLE)
+
+### COSH
+
+```COSH(numeric)```
+
+计算双曲余弦值。另请参阅 Java Math.cosh。该方法返回一个双精度浮点数。
+
+示例:
+
+COSH(X)
+
+### COT
+
+```COT(numeric)```
+
+计算三角余切值(1/TAN(角度))。另请参阅 Java Math.* 函数。该方法返回一个双精度浮点数。
+
+示例:
+
+COT(ANGLE)
+
+### SIN
+
+```SIN(numeric)```
+
+计算三角正弦值。另请参阅 Java Math.sin。该方法返回一个双精度浮点数。
+
+示例:
+
+SIN(ANGLE)
+
+### SINH
+
+```SINH(numeric)```
+
+计算双曲正弦值。另请参阅 Java Math.sinh。该方法返回一个双精度浮点数。
+
+示例:
+
+SINH(ANGLE)
+
+### TAN
+
+```TAN(numeric)```
+
+计算三角正切值。另请参阅 Java Math.tan。该方法返回一个双精度浮点数。
+
+示例:
+
+TAN(ANGLE)
+
+### TANH
+
+```TANH(numeric)```
+
+计算双曲正切值。另请参阅 Java Math.tanh。该方法返回一个双精度浮点数。
+
+示例:
+
+TANH(X)
+
+### MOD
+
+```MOD(dividendNumeric, divisorNumeric )```
+
+取模运算表达式。
+
+结果与除数的类型相同。如果任一参数为 NULL,则结果为 NULL。如果除数为 0,则会引发异常。结果与被除数的符号相同,或者等于 0。
+
+通常情况下,参数应具有标度 0,但 H2 并不要求。
+
+示例:
+
+MOD(A, B)
+
+### CEIL / CEILING
+
+```CEIL | CEILING (numeric)```
+
+返回大于或等于参数的最小整数值。该方法返回与参数相同类型的值,但标度设置为 0,并且如果适用,则调整精度。
+
+示例:
+
+CEIL(A)
+
+### EXP
+
+```EXP(numeric)```
+
+请参阅 Java Math.exp。该方法返回一个双精度浮点数。
+
+示例:
+
+EXP(A)
+
+### FLOOR
+
+```FLOOR(numeric)```
+
+返回小于或等于参数的最大整数值。该方法返回与参数相同类型的值,但标度设置为 0,并且如果适用,则调整精度。
+
+示例:
+
+FLOOR(A)
+
+### LN
+
+```LN(numeric)```
+
+计算自然对数(以 e 为底)的双精度浮点数值。参数必须是一个正数值。
+
+示例:
+
+LN(A)
+
+### LOG
+
+```LOG(baseNumeric, numeric)```
+
+计算以指定底数的对数,返回一个双精度浮点数。参数和底数必须是正数值。底数不能等于1。
+
+默认底数是 e(自然对数),在 PostgreSQL 模式下,默认底数是 10。在 MSSQLServer 模式下,可选的底数在参数之后指定。
+
+LOG 函数的单参数变体已被弃用,请使用 LN 或 LOG10 替代。
+
+示例:
+
+LOG(2, A)
+
+### LOG10
+
+```LOG10(numeric)```
+
+计算以 10 为底的对数,返回一个双精度浮点数。参数必须是一个正数值。
+
+示例:
+
+LOG10(A)
+
+### RADIANS
+
+```RADIANS(numeric)```
+
+请参阅 Java Math.toRadians。该方法返回一个双精度浮点数。
+
+示例:
+
+RADIANS(A)
+
+### SQRT
+
+```SQRT(numeric)```
+
+请参阅 Java Math.sqrt。该方法返回一个双精度浮点数。
+
+示例:
+
+SQRT(A)
+
+### PI
+
+```PI()```
+
+请参阅 Java Math.PI。该方法返回一个双精度浮点数。
+
+示例:
+
+PI()
+
+### POWER
+
+```POWER(numeric, numeric)```
+
+请参阅 Java Math.pow。该方法返回一个双精度浮点数。
+
+示例:
+
+POWER(A, B)
+
+### RAND / RANDOM
+
+```RAND | RANDOM([ int ])```
+
+如果不带参数调用该函数,则返回下一个伪随机数。如果带有参数调用,则将会给该会话的随机数生成器设定种子。该方法返回一个介于 0(包括)和 1(不包括)之间的双精度浮点数。
+
+示例:
+
+RAND()
+
+### ROUND
+
+```ROUND(numeric[, digitsInt])```
+
+四舍五入到指定的小数位数。该方法返回与参数相同类型的值,但如果适用,则调整精度和标度。
+
+示例:
+
+ROUND(N, 2)
+
+### SIGN
+
+```SIGN(numeric)```
+
+如果值小于 0,则返回 -1;如果值为零或 NaN,则返回 0;否则返回 1。
+
+示例:
+
+SIGN(N)
+
+### TRUNC
+
+```TRUNC | TRUNCATE(numeric[, digitsInt])```
+
+当指定了一个数值参数时,将其截断为指定的数字位数(接近0的下一个值),并返回与参数相同类型的值,但如果适用,则调整精度和标度。
+
+示例:
+
+TRUNC(N, 2)
+
+## Time and Date Functions
+
+### CURRENT_DATE
+
+```CURRENT_DATE [()]```
+
+返回当前日期。
+
+这些函数在事务(默认)或命令内部返回相同的值,具体取决于数据库模式。
+
+示例:
+
+CURRENT_DATE
+
+### CURRENT_TIME
+
+```CURRENT_TIME [()]```
+
+返回带有系统时区的当前时间。实际可用的最大精度取决于操作系统和 JVM,可以是 3(毫秒)或更高。在 Java 9 之前不支持更高的精度。
+
+示例:
+
+CURRENT_TIME
+
+### CURRENT_TIMESTAMP / NOW
+
+```CURRENT_TIMESTAMP[()] | NOW()```
+
+返回带有系统时区的当前时间戳。实际可用的最大精度取决于操作系统和 JVM,可以是 3(毫秒)或更高。在 Java 9 之前不支持更高的精度。
+
+示例:
+
+CURRENT_TIMESTAMP
+
+### DATEADD / TIMESTAMPADD
+
+```DATEADD| TIMESTAMPADD(dateAndTime, addIntLong, datetimeFieldString)```
+
+将单位添加到日期时间值中。datetimeFieldString 表示单位。使用负值来减去单位。当操作毫秒、微秒或纳秒时,addIntLong 可能是一个 long 值,否则其范围被限制为 int。如果单位与指定值兼容,则此方法返回与指定值相同类型的值。如果指定的字段是 HOUR、MINUTE、SECOND、MILLISECOND 等,而值是 DATE 值,DATEADD 返回组合的 TIMESTAMP。对于 TIME 值,不允许使用 DAY、MONTH、YEAR、WEEK 等字段。
+
+示例:
+
+DATEADD(CREATED, 1, 'MONTH')
+
+### DATEDIFF
+
+```DATEDIFF(aDateAndTime, bDateAndTime, datetimeFieldString)```
+
+返回两个日期时间值之间跨越的单位边界数。此方法返回一个 long 值。datetimeField 表示单位。
+
+示例:
+
+DATEDIFF(T1.CREATED, T2.CREATED, 'MONTH')
+
+### DATE_TRUNC
+
+```DATE_TRUNC (dateAndTime, datetimeFieldString)```
+
+将指定的日期时间值截断到指定的字段。
+
+示例:
+
+DATE_TRUNC(CREATED, 'DAY');
+
+### DAYNAME
+
+```DAYNAME(dateAndTime)```
+
+返回星期几的名称(英文)。
+
+示例:
+
+DAYNAME(CREATED)
+
+### DAY_OF_MONTH
+
+```DAY_OF_MONTH(dateAndTime)```
+
+返回月份中的日期(1-31)。
+
+示例:
+
+DAY_OF_MONTH(CREATED)
+
+### DAY_OF_WEEK
+
+```DAY_OF_WEEK(dateAndTime)```
+
+返回星期几的数值(1-7)(星期一至星期日),根据本地化设置。
+
+示例:
+
+DAY_OF_WEEK(CREATED)
+
+### DAY_OF_YEAR
+
+```DAY_OF_YEAR(dateAndTime)```
+
+返回一年中的日期(1-366)。
+
+示例:
+
+DAY_OF_YEAR(CREATED)
+
+### EXTRACT
+
+```EXTRACT ( datetimeField FROM dateAndTime)```
+
+从日期/时间值中返回特定时间单位的值。该方法对于 EPOCH 字段返回一个数值,对于其他字段返回一个整数。
+
+示例:
+
+EXTRACT(SECOND FROM CURRENT_TIMESTAMP)
+
+### FORMATDATETIME
+
+```FORMATDATETIME (dateAndTime, formatString)```
+
+将日期、时间或时间戳格式化为字符串。最重要的格式字符包括:y(年)、M(月)、d(日)、H(时)、m(分)、s(秒)。有关格式的详细信息,请参阅 java.time.format.DateTimeFormatter。
+
+该方法返回一个字符串。
+
+示例:
+
+CALL FORMATDATETIME(CREATED, 'yyyy-MM-dd HH:mm:ss')
+
+### HOUR
+
+```HOUR(dateAndTime)```
+
+从日期/时间值中返回小时(0-23)。
+
+示例:
+
+HOUR(CREATED)
+
+### MINUTE
+
+```MINUTE(dateAndTime)```
+
+从日期/时间值中返回分钟(0-59)。
+
+该函数已经被弃用,请使用 EXTRACT 替代。
+
+示例:
+
+MINUTE(CREATED)
+
+### MONTH
+
+```MONTH(dateAndTime)```
+
+从日期/时间值中返回月份(1-12)。
+
+该函数已经被弃用,请使用 EXTRACT 替代。
+
+示例:
+
+MONTH(CREATED)
+
+### MONTHNAME
+
+```MONTHNAME(dateAndTime)```
+
+返回月份的名称(英文)。
+
+示例:
+
+MONTHNAME(CREATED)
+
+### PARSEDATETIME / TO_DATE
+
+```PARSEDATETIME | TO_DATE(string, formatString)```
+解析一个字符串并返回一个 TIMESTAMP WITH TIME ZONE 值。最重要的格式字符包括:y(年)、M(月)、d(日)、H(时)、m(分)、s(秒)。有关格式的详细信息,请参阅 java.time.format.DateTimeFormatter。
+
+示例:
+
+CALL PARSEDATETIME('2021-04-08 13:34:45','yyyy-MM-dd HH:mm:ss')
+
+### QUARTER
+
+```QUARTER(dateAndTime)```
+
+从日期/时间值中返回季度(1-4)。
+
+示例:
+
+QUARTER(CREATED)
+
+### SECOND
+
+```SECOND(dateAndTime)```
+
+从日期/时间值中返回秒数(0-59)。
+
+该函数已经被弃用,请使用 EXTRACT 替代。
+
+示例:
+
+SECOND(CREATED)
+
+### WEEK
+
+```WEEK(dateAndTime)```
+
+返回日期/时间值中的周数(1-53)。
+
+该函数使用当前系统的区域设置。
+
+示例:
+
+WEEK(CREATED)
+
+### YEAR
+
+```YEAR(dateAndTime)```
+
+返回日期/时间值中的年份。
+
+示例:
+
+YEAR(CREATED)
+
+### FROM_UNIXTIME
+
+```FROM_UNIXTIME (unixtime, formatString,timeZone)```
+
+将从 UNIX 纪元(1970-01-01 00:00:00 UTC)开始的秒数转换为表示该时刻时间戳的字符串。
+
+最重要的格式字符包括:y(年)、M(月)、d(日)、H(时)、m(分)、s(秒)。有关格式的详细信息,请参阅 `java.time.format.DateTimeFormatter`。
+
+`timeZone` 是可选的,默认值为系统的时区。`timezone` 的值可以是一个 `UTC+ 时区偏移`,例如,`UTC+8` 表示亚洲/上海时区,请参阅 `java.time.ZoneId`。
+
+该方法返回一个字符串。
+
+示例:
+
+// 使用默认时区
+
+CALL FROM_UNIXTIME(1672502400, 'yyyy-MM-dd HH:mm:ss')
+
+or
+
+// 使用指定时区
+
+CALL FROM_UNIXTIME(1672502400, 'yyyy-MM-dd HH:mm:ss','UTC+6')
+
+## System Functions
+
+### CAST
+
+```CAST(value as dataType)```
+
+将一个值转换为另一个数据类型。
+
+支持的数据类型有:STRING | VARCHAR,INT | INTEGER,LONG | BIGINT,BYTE,FLOAT,DOUBLE,DECIMAL(p,s),TIMESTAMP,DATE,TIME,BYTES
+
+示例:
+
+CONVERT(NAME AS INT)
+
+### COALESCE
+
+```COALESCE(aValue, bValue [,...])```
+
+返回第一个非空值。
+
+示例:
+
+COALESCE(A, B, C)
+
+### IFNULL
+
+```IFNULL(aValue, bValue)```
+
+返回第一个非空值。
+
+示例:
+
+IFNULL(A, B)
+
+### NULLIF
+
+```NULLIF(aValue, bValue)```
+
+如果 'a' 等于 'b',则返回 NULL,否则返回 'a'。
+
+示例:
+
+NULLIF(A, B)
+
+### CASE WHEN
+
+```
+select
+ case
+ when c_string in ('c_string') then 1
+ else 0
+ end as c_string_1,
+ case
+ when c_string not in ('c_string') then 1
+ else 0
+ end as c_string_0,
+ case
+ when c_tinyint = 117
+ and TO_CHAR(c_boolean) = 'true' then 1
+ else 0
+ end as c_tinyint_boolean_1,
+ case
+ when c_tinyint != 117
+ and TO_CHAR(c_boolean) = 'true' then 1
+ else 0
+ end as c_tinyint_boolean_0,
+ case
+ when c_tinyint != 117
+ or TO_CHAR(c_boolean) = 'true' then 1
+ else 0
+ end as c_tinyint_boolean_or_1,
+ case
+ when c_int > 1
+ and c_bigint > 1
+ and c_float > 1
+ and c_double > 1
+ and c_decimal > 1 then 1
+ else 0
+ end as c_number_1,
+ case
+ when c_tinyint <> 117 then 1
+ else 0
+ end as c_number_0
+from
+ fake
+```
+
+用于确定条件是否有效,并根据不同的判断返回不同的值
+
+示例:
+
+case when c_string in ('c_string') then 1 else 0 end
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/transform-v2/sql-udf.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/transform-v2/sql-udf.md
new file mode 100644
index 000000000000..4c1a3777408d
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.3.7/transform-v2/sql-udf.md
@@ -0,0 +1,133 @@
+# SQL用户定义函数
+
+> SQL 转换插件的用户定义函数 (UDF)
+
+## 描述
+
+使用UDF SPI扩展SQL转换函数库。
+
+## UDF API
+
+```java
+package org.apache.seatunnel.transform.sql.zeta;
+
+public interface ZetaUDF {
+ /**
+ * Function name
+ *
+ * @return function name
+ */
+ String functionName();
+
+ /**
+ * The type of function result
+ *
+ * @param argsType input arguments type
+ * @return result type
+ */
+ SeaTunnelDataType> resultType(List> argsType);
+
+ /**
+ * Evaluate
+ *
+ * @param args input arguments
+ * @return result value
+ */
+ Object evaluate(List