1-
21## 1.格式:
3- ```
2+
3+ ``` sql
44 CREATE TABLE tableName (
55 colName cloType,
66 ...
2020 );
2121```
2222
23- # 2.支持版本
23+ ## 2.支持版本
24+
2425 2.10.0-cdh5.13.0
25-
26+
2627## 3.表结构定义
27-
28- | 参数名称| 含义|
29- | ----| ---|
30- | tableName | 注册到flink的表名称|
31- | colName | 列名称|
32- | colType | 列类型 [ colType支持的类型] ( docs/colType.md ) |
33- | PERIOD FOR SYSTEM_TIME | 关键字表明该定义的表为维表信息|
34- | PRIMARY KEY(keyInfo) | 维表主键定义;多个列之间用逗号隔开|
35-
36- ## 4.参数
37-
38- | 参数名称| 含义| 是否必填| 默认值|
39- | ----| ---| ---| ----|
40- | type | 表明维表的类型[ impala] | 是||
41- | url | 连接postgresql数据库 jdbcUrl | 是||
42- | userName | postgresql连接用户名 | 是||
43- | password | postgresql连接密码| 是||
44- | tableName | postgresql表名称| 是||
45- | authMech | 身份验证机制 (0, 1, 2, 3), 暂不支持kerberos | 是| 0|
46- | principal | kerberos用于登录的principal(authMech=1时独有) | authMech=1为必填|
47- | keyTabFilePath | keytab文件的路径(authMech=1时独有) | authMech=1为必填 ||
48- | krb5FilePath | krb5.conf文件路径(authMech=1时独有) | authMech=1为必填||
49- | krbServiceName | Impala服务器的Kerberos principal名称(authMech=1时独有) | authMech=1为必填||
50- | krbRealm | Kerberos的域名(authMech=1时独有) | 否| HADOOP.COM |
51- | enablePartition | 是否支持分区| 否| false|
52- | partitionfields | 分区字段名| 否,enablePartition='true'时为必填||
53- | partitionFieldTypes | 分区字段类型 | 否,enablePartition='true'时为必填||
54- | partitionValues | 分区值| 否,enablePartition='true'时为必填||
55- | cache | 维表缓存策略(NONE/LRU/ALL)| 否| NONE|
56- | partitionedJoin | 是否在維表join之前先根据 設定的key 做一次keyby操作(可以減少维表的数据缓存量)| 否| false|
57-
58- ----------
59- > 缓存策略
60- * NONE: 不做内存缓存
61- * LRU:
62- * cacheSize: 缓存的条目数量
63- * cacheTTLMs:缓存的过期时间(ms)
64-
65-
66- ## 5.样例
28+
29+ [ 维表参数信息] ( docs/plugin/sideParams.md )
30+
31+ impala独有的参数配置
32+
33+ | 参数名称 | 含义 | 是否必填 | 默认值 |
34+ | ------------------- | ------------------------------------------------------------ | --------------------------------- | ---------- |
35+ | type | 表明维表的类型[ impala] | 是 | |
36+ | url | 连接postgresql数据库 jdbcUrl | 是 | |
37+ | userName | postgresql连接用户名 | 是 | |
38+ | password | postgresql连接密码 | 是 | |
39+ | tableName | postgresql表名称 | 是 | |
40+ | authMech | 身份验证机制 (0, 1, 2, 3), 暂不支持kerberos | 是 | 0 |
41+ | principal | kerberos用于登录的principal(authMech=1时独有) | authMech=1为必填 | |
42+ | keyTabFilePath | keytab文件的路径(authMech=1时独有) | authMech=1为必填 | |
43+ | krb5FilePath | krb5.conf文件路径(authMech=1时独有) | authMech=1为必填 | |
44+ | krbServiceName | Impala服务器的Kerberos principal名称(authMech=1时独有) | authMech=1为必填 | |
45+ | krbRealm | Kerberos的域名(authMech=1时独有) | 否 | HADOOP.COM |
46+ | enablePartition | 是否支持分区 | 否 | false |
47+ | partitionfields | 分区字段名 | 否,enablePartition='true'时为必填 | |
48+ | partitionFieldTypes | 分区字段类型 | 否,enablePartition='true'时为必填 | |
49+ | partitionValues | 分区值 | 否,enablePartition='true'时为必填 | |
50+ | cache | 维表缓存策略(NONE/LRU/ALL) | 否 | NONE |
51+ | partitionedJoin | 是否在維表join之前先根据 設定的key 做一次keyby操作(可以減少维表的数据缓存量) | 否 | false |
52+
53+ ## 4.样例
54+
55+ ### ALL全量维表定义
56+
57+ ``` sql
58+ // 定义全量维表
59+ CREATE TABLE sideTable (
60+ id INT ,
61+ name VARCHAR ,
62+ PRIMARY KEY (id) ,
63+ PERIOD FOR SYSTEM_TIME
64+ )WITH(
65+ type = ' mysql' ,
66+ url = ' jdbc:impala://localhost:21050/mqtest' ,
67+ userName = ' dtstack' ,
68+ password = ' 1abc123' ,
69+ tableName = ' test_impala_all' ,
70+ authMech= ' 3' ,
71+ cache = ' ALL' ,
72+ cacheTTLMs = ' 60000' ,
73+ parallelism = ' 2' ,
74+ partitionedJoin= ' false'
75+ );
76+
6777```
78+
79+ ### LRU异步维表定义
80+
81+ ``` sql
6882create table sideTable (
6983 channel varchar ,
7084 xccount int ,
@@ -84,14 +98,79 @@ create table sideTable(
8498 partitionedJoin= ' false'
8599 );
86100
101+ ```
102+
103+ ### MySQL异步维表关联
104+
105+ ``` sql
106+ CREATE TABLE MyTable (
107+ id int ,
108+ name varchar
109+ )WITH(
110+ type = ' kafka11' ,
111+ bootstrapServers = ' 172.16.8.107:9092' ,
112+ zookeeperQuorum = ' 172.16.8.107:2181/kafka' ,
113+ offsetReset = ' latest' ,
114+ topic = ' cannan_yctest01' ,
115+ timezone= ' Asia/Shanghai' ,
116+ enableKeyPartitions = ' false' ,
117+ topicIsPattern = ' false' ,
118+ parallelism = ' 1'
119+ );
120+
121+ CREATE TABLE MyResult (
122+ id INT ,
123+ name VARCHAR
124+ )WITH(
125+ type= ' impala' ,
126+ url= ' jdbc:impala://localhost:21050/mytest' ,
127+ userName= ' dtstack' ,
128+ password= ' abc123' ,
129+ tableName = ' test_impala_zf' ,
130+ updateMode = ' append' ,
131+ parallelism = ' 1' ,
132+ batchSize = ' 100' ,
133+ batchWaitInterval = ' 1000'
134+ );
135+
136+ CREATE TABLE sideTable (
137+ id INT ,
138+ name VARCHAR ,
139+ PRIMARY KEY (id) ,
140+ PERIOD FOR SYSTEM_TIME
141+ )WITH(
142+ type= ' impala' ,
143+ url= ' jdbc:impala://localhost:21050/mytest' ,
144+ userName= ' dtstack' ,
145+ password= ' abc123' ,
146+ tableName = ' test_impala_10' ,
147+ partitionedJoin = ' false' ,
148+ cache = ' LRU' ,
149+ cacheSize = ' 10000' ,
150+ cacheTTLMs = ' 60000' ,
151+ asyncPoolSize = ' 3' ,
152+ parallelism = ' 1'
153+ );
154+
155+ insert
156+ into
157+ MyResult
158+ select
159+ m .id ,
160+ s .name
161+ from
162+ MyTable m
163+ join
164+ sideTable s
165+ on m .id = s .id ;
87166
88167```
89168
90- ## 6. 分区样例
169+ ### 分区样例
91170
92171注:分区字段放在最后面,如下,name是分区字段,放在channel,xccount字段的后面
93172
94- ```
173+ ``` sql
95174create table sideTable (
96175 channel varchar ,
97176 xccount int ,
@@ -118,4 +197,3 @@ create table sideTable(
118197
119198```
120199
121-
0 commit comments