import ChangeLog from ‘../changelog/connector-jdbc.md’;
JDBC Redshift 源连接器
通过 JDBC 读取外部数据源数据。
Spark
Flink
Seatunnel Zeta
- 您需要确保 jdbc 驱动程序 jar 包 已放置在目录
${SEATUNNEL_HOME}/plugins/中。
- 您需要确保 jdbc 驱动程序 jar 包 已放置在目录
${SEATUNNEL_HOME}/lib/中。
支持查询 SQL 并可以实现投影效果。
| 数据源 | 支持的版本 | 驱动 | 连接串 | Maven |
|---|---|---|---|---|
| redshift | 不同的依赖版本有不同的驱动类 | com.amazon.redshift.jdbc.Driver | jdbc:redshift://localhost:5439/database | 下载 |
请下载对应 ‘Maven’ 的支持列表,并将其复制到 ‘$SEATUNNEL_HOME/plugins/jdbc/lib/’ 工作目录
例如 Redshift 数据源:cp RedshiftJDBC42-xxx.jar $SEATUNNEL_HOME/plugins/jdbc/lib/
| Redshift 数据类型 | SeaTunnel 数据类型 |
|---|---|
| SMALLINT INT2 | SHORT |
| INTEGER INT INT4 | INT |
| BIGINT INT8 OID | LONG |
| DECIMAL NUMERIC | DECIMAL |
| REAL FLOAT4 | FLOAT |
| DOUBLE_PRECISION FLOAT8 FLOAT | DOUBLE |
| BOOLEAN BOOL | BOOLEAN |
| CHAR CHARACTER NCHAR BPCHAR VARCHAR CHARACTER_VARYING NVARCHAR TEXT SUPER | STRING |
| VARBYTE BINARY_VARYING | BYTES |
| TIME TIME_WITH_TIME_ZONE TIMETZ | LOCALTIME |
| TIMESTAMP TIMESTAMP_WITH_OUT_TIME_ZONE TIMESTAMPTZ | LOCALDATETIME |
此示例在单个并行中查询您的测试“数据库”中的 type_bin 表的 16 条数据,并查询其所有字段。您也可以指定要查询的字段以最终输出到控制台。
env {
parallelism = 2
job.mode = "BATCH"
}
source{
Jdbc {
url = "jdbc:redshift://localhost:5439/dev"
driver = "com.amazon.redshift.jdbc.Driver"
username = "root"
password = "123456"
table_path = "public.table2"
# 使用查询过滤行和列
query = "select id, name from public.table2 where id > 100"
#split.size = 8096
#split.even-distribution.factor.upper-bound = 100
#split.even-distribution.factor.lower-bound = 0.05
#split.sample-sharding.threshold = 1000
#split.inverse-sampling.rate = 1000
}
}
sink {
Console {}
}
配置 table_list 将打开自动分割,您可以配置 split.* 来调整分割策略
env { job.mode = "BATCH" parallelism = 2 } source { Jdbc { url = "jdbc:redshift://localhost:5439/dev" driver = "com.amazon.redshift.jdbc.Driver" username = "root" password = "123456" table_list = [ { table_path = "public.table1" }, { table_path = "public.table2" # 使用查询过滤行和列 query = "select id, name from public.table2 where id > 100" } ] #split.size = 8096 #split.even-distribution.factor.upper-bound = 100 #split.even-distribution.factor.lower-bound = 0.05 #split.sample-sharding.threshold = 1000 #split.inverse-sampling.rate = 1000 } } sink { Console {} }