Skip to content

Commit 2dd2483

Browse files
Scorpio777888Gemini147258davidzollo
authored
[Doc][Improve] support chinese [docs/zh/connector-v2/sink/Vertica.md] (#8852)
Co-authored-by: Gemini147258 <[email protected]> Co-authored-by: David Zollo <[email protected]>
1 parent 10e3636 commit 2dd2483

File tree

1 file changed

+177
-0
lines changed

1 file changed

+177
-0
lines changed

Diff for: docs/zh/connector-v2/sink/Vertica.md

+177
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,177 @@
1+
# Vertica
2+
3+
> JDBC Vertica Sink 连接器
4+
5+
## 支持的引擎
6+
7+
> Spark<br/>
8+
> Flink<br/>
9+
> SeaTunnel Zeta<br/>
10+
11+
## 描述
12+
13+
通过 JDBC 写入数据。支持批处理和流处理模式,支持并发写入,支持精确一次语义(使用 XA 事务保证)。
14+
15+
## 使用依赖
16+
17+
### 对于 Spark/Flink 引擎
18+
19+
> 1. 需要确保 [jdbc 驱动 jar 包](https://www.vertica.com/download/vertica/client-drivers/) 已放置在目录 `${SEATUNNEL_HOME}/plugins/` 中。
20+
21+
### 对于 SeaTunnel Zeta 引擎
22+
23+
> 1. 需要确保 [jdbc 驱动 jar 包](https://www.vertica.com/download/vertica/client-drivers/) 已放置在目录 `${SEATUNNEL_HOME}/lib/` 中。
24+
25+
## 主要特性
26+
27+
- [x] [精确一次](../../concept/connector-v2-features.md)
28+
- [ ] [cdc](../../concept/connector-v2-features.md)
29+
30+
> 使用 `Xa 事务` 来保证 `精确一次`。因此仅支持支持 `Xa 事务` 的数据库。可以通过设置 `is_exactly_once=true` 来启用。
31+
32+
## 支持的数据源信息
33+
34+
| 数据源 | 支持的版本 | 驱动类名 | URL 格式 | Maven 依赖 |
35+
|-----------|--------------------------------|------------------------------|--------------------------------------|---------------------------------------------------------------------------------------------|
36+
| Vertica | 不同依赖版本有不同的驱动类名 | com.vertica.jdbc.Driver | jdbc:vertica://localhost:5433/vertica | [下载](https://www.vertica.com/download/vertica/client-drivers/) |
37+
38+
## 数据库依赖
39+
40+
> 请下载支持列表中对应的 'Maven' 依赖,并将其复制到 `$SEATUNNEL_HOME/plugins/jdbc/lib/` 工作目录中。<br/>
41+
> 例如 Vertica 数据源:`cp vertica-jdbc-xxx.jar $SEATUNNEL_HOME/plugins/jdbc/lib/`
42+
43+
## 数据类型映射
44+
45+
| Vertica 数据类型 | SeaTunnel 数据类型 |
46+
|------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------|
47+
| BIT(1)<br/>INT UNSIGNED | BOOLEAN |
48+
| TINYINT<br/>TINYINT UNSIGNED<br/>SMALLINT<br/>SMALLINT UNSIGNED<br/>MEDIUMINT<br/>MEDIUMINT UNSIGNED<br/>INT<br/>INTEGER<br/>YEAR | INT |
49+
| INT UNSIGNED<br/>INTEGER UNSIGNED<br/>BIGINT | BIGINT |
50+
| BIGINT UNSIGNED | DECIMAL(20,0) |
51+
| DECIMAL(x,y)(获取指定列的列大小 <38) | DECIMAL(x,y) |
52+
| DECIMAL(x,y)(获取指定列的列大小 >38) | DECIMAL(38,18) |
53+
| DECIMAL UNSIGNED | DECIMAL((获取指定列的列大小)+1,<br/>(获取指定列的小数点右侧的位数))) |
54+
| FLOAT<br/>FLOAT UNSIGNED | FLOAT |
55+
| DOUBLE<br/>DOUBLE UNSIGNED | DOUBLE |
56+
| CHAR<br/>VARCHAR<br/>TINYTEXT<br/>MEDIUMTEXT<br/>TEXT<br/>LONGTEXT<br/>JSON | STRING |
57+
| DATE | DATE |
58+
| TIME | TIME |
59+
| DATETIME<br/>TIMESTAMP | TIMESTAMP |
60+
| TINYBLOB<br/>MEDIUMBLOB<br/>BLOB<br/>LONGBLOB<br/>BINARY<br/>VARBINAR<br/>BIT(n) | BYTES |
61+
| GEOMETRY<br/>UNKNOWN | 尚未支持 |
62+
63+
## 接收器选项
64+
65+
| 名称 | 类型 | 是否必填 | 默认值 | 描述 |
66+
|-----------------------------------|---------|----------|---------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
67+
| url | String || - | JDBC 连接的 URL。参考示例:`jdbc:vertica://localhost:5433/vertica` |
68+
| driver | String || - | 用于连接远程数据源的 JDBC 类名,如果使用 Vertica,值为 `com.vertica.jdbc.Driver`|
69+
| user | String || - | 连接实例的用户名 |
70+
| password | String || - | 连接实例的密码 |
71+
| query | String || - | 使用此 SQL 将上游输入数据写入数据库。例如 `INSERT ...``query` 优先级更高。 |
72+
| database | String || - | 使用此 `database``table-name` 自动生成 SQL 并接收上游输入数据写入数据库。此选项与 `query` 互斥,且优先级更高。 |
73+
| table | String || - | 使用 `database` 和此 `table-name` 自动生成 SQL 并接收上游输入数据写入数据库。此选项与 `query` 互斥,且优先级更高。 |
74+
| primary_keys | Array || - | 此选项用于在自动生成 SQL 时支持 `insert``delete``update` 等操作。 |
75+
| support_upsert_by_query_primary_key_exist | Boolean || false | 选择使用 INSERT SQL、UPDATE SQL 来处理更新事件(INSERT, UPDATE_AFTER),基于查询主键是否存在。此配置仅在数据库不支持 upsert 语法时使用。**注意**:此方法性能较低。 |
76+
| connection_check_timeout_sec | Int || 30 | 用于验证连接完成的数据库操作的等待时间(秒)。 |
77+
| max_retries | Int || 0 | 提交失败(executeBatch)的重试次数。 |
78+
| batch_size | Int || 1000 | 对于批量写入,当缓冲的记录数达到 `batch_size` 或时间达到 `checkpoint.interval` 时,数据将被刷新到数据库中。 |
79+
| is_exactly_once | Boolean || false | 是否启用精确一次语义,将使用 Xa 事务。如果启用,需要设置 `xa_data_source_class_name`|
80+
| generate_sink_sql | Boolean || false | 根据要写入的数据库表生成 SQL 语句。 |
81+
| xa_data_source_class_name | String || - | 数据库驱动的 XA 数据源类名,例如 Vertica 为 `com.vertical.cj.jdbc.VerticalXADataSource`,其他数据源请参考附录。 |
82+
| max_commit_attempts | Int || 3 | 事务提交失败的重试次数。 |
83+
| transaction_timeout_sec | Int || -1 | 事务打开后的超时时间,默认为 -1(永不超时)。注意:设置超时可能会影响精确一次语义。 |
84+
| auto_commit | Boolean || true | 默认启用自动事务提交。 |
85+
| properties | Map || - | 额外的连接配置参数,当 properties 和 URL 中有相同的参数时,优先级由驱动的具体实现决定。例如,在 MySQL 中,properties 优先于 URL。 |
86+
| common-options | || - | 接收器插件通用参数,详情请参考 [Sink Common Options](../sink-common-options.md)|
87+
| enable_upsert | Boolean || true | 通过主键存在启用 upsert。如果任务中没有键重复数据,将此参数设置为 `false` 可以加快数据导入速度。 |
88+
89+
### 提示
90+
91+
> 如果未设置 `partition_column`,将以单并发运行;如果设置了 `partition_column`,将根据任务的并发度并行执行。
92+
93+
## 任务示例
94+
95+
### 简单示例:
96+
97+
> 此示例定义了一个 SeaTunnel 同步任务,通过 FakeSource 自动生成数据并发送到 JDBC Sink。FakeSource 总共生成 16 行数据(row.num=16),每行有两个字段,name(字符串类型)和 age(int 类型)。最终目标表 test_table 中也将有 16 行数据。在运行此任务之前,您需要在 Vertica 中创建数据库 test 和表 test_table。如果您尚未安装和部署 SeaTunnel,请按照 [安装 SeaTunnel](../../start-v2/locally/deployment.md) 中的说明进行安装和部署。然后按照 [使用 SeaTunnel Engine 快速开始](../../start-v2/locally/quick-start-seatunnel-engine.md) 中的说明运行此任务。
98+
99+
```
100+
# 定义运行时环境
101+
env {
102+
parallelism = 1
103+
job.mode = "BATCH"
104+
}
105+
106+
source {
107+
# 这是一个示例源插件,**仅用于测试和演示功能**
108+
FakeSource {
109+
parallelism = 1
110+
plugin_output = "fake"
111+
row.num = 16
112+
schema = {
113+
fields {
114+
name = "string"
115+
age = "int"
116+
}
117+
}
118+
}
119+
# 如果想了解更多关于如何配置 SeaTunnel 的信息,并查看完整的源插件列表,
120+
# 请访问 https://seatunnel.apache.org/docs/connector-v2/source
121+
}
122+
123+
transform {
124+
# 如果想了解更多关于如何配置 SeaTunnel 的信息,并查看完整的转换插件列表,
125+
# 请访问 https://seatunnel.apache.org/docs/transform-v2
126+
}
127+
128+
sink {
129+
jdbc {
130+
url = "jdbc:vertica://localhost:5433/vertica"
131+
driver = "com.vertica.jdbc.Driver"
132+
user = "root"
133+
password = "123456"
134+
query = "insert into test_table(name,age) values(?,?)"
135+
}
136+
# 如果想了解更多关于如何配置 SeaTunnel 的信息,并查看完整的接收器插件列表,
137+
# 请访问 https://seatunnel.apache.org/docs/connector-v2/sink
138+
}
139+
```
140+
141+
### 生成接收器 SQL
142+
143+
> 此示例不需要编写复杂的 SQL 语句,您可以通过配置数据库名称和表名称自动生成插入语句。
144+
145+
```
146+
sink {
147+
jdbc {
148+
url = "jdbc:vertica://localhost:5433/vertica"
149+
driver = "com.vertica.jdbc.Driver"
150+
user = "root"
151+
password = "123456"
152+
# 根据数据库表名自动生成 SQL 语句
153+
generate_sink_sql = true
154+
database = test
155+
table = test_table
156+
}
157+
}
158+
```
159+
160+
### 精确一次:
161+
162+
> 对于精确写入场景,我们保证精确一次语义。
163+
164+
```
165+
sink {
166+
jdbc {
167+
url = "jdbc:vertica://localhost:5433/vertica"
168+
driver = "com.vertica.jdbc.Driver"
169+
max_retries = 0
170+
user = "root"
171+
password = "123456"
172+
query = "insert into test_table(name,age) values(?,?)"
173+
is_exactly_once = "true"
174+
xa_data_source_class_name = "com.vertical.cj.jdbc.VerticalXADataSource"
175+
}
176+
}
177+
```

0 commit comments

Comments
 (0)