Commit 62957187 authored by godkaikai's avatar godkaikai

0.2.2-rc1

parent 06be59e1
......@@ -20,17 +20,17 @@ DataLink 开源项目及社区正在建设,希望本项目可以帮助你更
| 域 | 概要 | 进展 |
| :--------: | :-------------------: | :------: |
| Studio | FlinkSQL 作业管理 | 已完成 |
| | FlinkSQL 编辑器 | 已完成 |
| | 运行信息 | 已完成 |
| | 查询结果 | 已完成 |
| | 历史记录 | 已完成 |
| | 函数浏览 | 已完成 |
| | 执行配置 | 已完成 |
| | 会话创建与共享 | 已完成 |
| | 连接器管理 | 已完成 |
| | 同步执行 | 已完成 |
| | 异步提交 | 已完成 |
| Studio | FlinkSQL 作业管理 | 0.1.0 |
| | FlinkSQL 编辑器 | 0.1.0 |
| | 运行信息 | 0.1.0 |
| | 查询结果 | 0.1.0 |
| | 历史记录 | 0.1.0 |
| | 函数浏览 | 0.1.0 |
| | 执行配置 | 0.1.0 |
| | 会话创建与共享 | 0.1.0 |
| | 连接器管理 | 0.1.0 |
| | 同步执行 | 0.1.0 |
| | 异步提交 | 0.1.0 |
| | 函数自动补全 | 敬请期待 |
| | 任务详情 | 敬请期待 |
| | 任务审计 | 敬请期待 |
......@@ -49,20 +49,20 @@ DataLink 开源项目及社区正在建设,希望本项目可以帮助你更
| | 更改对比 | 敬请期待 |
| | Create Table 生成 | 敬请期待 |
| | Insert 生成 | 敬请期待 |
| | AGGTABLE 语法 | 敬请期待 |
| | AGGTABLE 语法 | 0.2.2 |
| | SQL 翻译 | 敬请期待 |
| | 智能 Select 模式 | 敬请期待 |
| | 自动补全元数据 | 敬请期待 |
| | 任务反压和倾斜提示 | 敬请期待 |
| | 流任务数据预览 | 敬请期待 |
| | ... | 欢迎提议 |
| 集群中心 | 集群注册与管理 | 已完成 |
| | 心跳检测 | 已完成 |
| 集群中心 | 集群注册与管理 | 0.1.0 |
| | 心跳检测 | 0.1.0 |
| | 修改与删除审计 | 敬请期待 |
| | 集群信息 | 敬请期待 |
| | 历史任务检索 | 敬请期待 |
| | 启动与停止 | 敬请期待 |
| 文档中心 | FlinkSQL 函数文档管理 | 已完成 |
| 文档中心 | FlinkSQL 函数文档管理 | 0.1.0 |
| | FlinkSQL 示例文档 | 敬请期待 |
| | FlinkSQL 调优文档 | 敬请期待 |
| 用户中心 | 用户管理 | 敬请期待 |
......@@ -93,7 +93,7 @@ DataLink 开源项目及社区正在建设,希望本项目可以帮助你更
### 最新版本
dlink-0.2.1
dlink-0.2.2-rc1
### 从安装包开始
......@@ -103,11 +103,11 @@ config/ -- 配置文件
lib/ -- 外部依赖及Connector
|- dlink-client-1.12.jar -- 必需
|- dlink-connector-jdbc.jar
|- dlink-function-0.2.2.jar
|- flink-connector-jdbc_2.11-1.12.4.jar
|- flink-csv-1.12.4.jar
|- flink-json-1.12.4.jar
|- mysql-connector-java-8.0.21.jar
|- ojdbc6-11.2.0.3.jar
sql/
|- dlink.sql --Mysql初始化脚本
auto.sh --启动停止脚本
......@@ -141,8 +141,11 @@ dlink -- 父项目
|-dlink-core -- 执行中心
|-dlink-doc -- 文档
| |-bin -- 启动脚本
| |-bug -- bug 反馈
| |-config -- 配置文件
| |-doc -- 使用文档
| |-sql -- sql脚本
|-dlink-function -- 函数中心
|-dlink-web -- React 前端
```
......@@ -160,9 +163,9 @@ npm run build
maven clean install -Dmaven.test.skip=true
```
#### 扩展Connector
#### 扩展Connector及UDF
将 Flink 集群上已扩展好的 Connector 直接放入 Dlink 的 lib 下,然后重启即可。
将 Flink 集群上已扩展好的 Connector和UDF 直接放入 Dlink 的 lib 下,然后重启即可。
定制 Connector 过程同 Flink 官方一样。
#### 扩展其他版本的Flink
......@@ -171,10 +174,6 @@ Flink 的版本取决于 lib 下的 dlink-client-1.12.jar。
当前版本默认为 Flink 1.12.4 API。
向其他版本的集群提交任务可能存在问题,未来将实现 1.13、1.11、1.10.
#### 源码质量一般问题
利用一个周写的项目所有代码,而且React从零边学边写,还请海涵~(> ^ <)~后续版本将优化代码逻辑。
## 使用手册
### 基础使用
......@@ -218,7 +217,7 @@ select * from student
#### 使用技巧
(=。=)~ 敬请期待。
1.[Flink AggTable 在 Dlink 的实践](https://github.com/DataLinkDC/dlink/dlink-doc/doc/FlinkAggTable在Dlink的实践.md)
#### 常见问题及解决
......@@ -256,15 +255,15 @@ QQ社区群:**543709668**,申请备注 “ Dlink ”,不写不批哦
> 首页
![](https://mmbiz.qpic.cn/mmbiz_png/dyicwnSlTFTq1s1uxJic1HAhphuR655hQ6eLXSIVvU55qYtZKB3WgMCNaX75jwnKSEet2IEIfyWRX9032ib9vqjibA/0?wx_fmt=png)
![](https://mmbiz.qpic.cn/mmbiz_png/dyicwnSlTFTrkkX1Jsib7GxQY7tpiciaNdkGIAFicLZ3bwSawOianJQnNWuKAvZJ3Bb00DiaBxtxvnXgToGibPAwMFhs6A/0?wx_fmt=png)
> Studio 执行信息
![](https://mmbiz.qpic.cn/mmbiz_png/dyicwnSlTFTo5cwuZy7GSLibw5J7Lx6cicxbb59bxUA0XKUQbQoCS2drUO5uCQk8JYJrBexL4fFwk5wltMweLiczibg/0?wx_fmt=png)
![](https://mmbiz.qpic.cn/mmbiz_png/dyicwnSlTFTrkkX1Jsib7GxQY7tpiciaNdkGApFiacyxkKERLE9FhsteTeTovcjTQHiaPKcxY6YqSukkVYZWVFGxPJibQ/0?wx_fmt=png)
> Studio 数据预览
![](https://mmbiz.qpic.cn/mmbiz_png/dyicwnSlTFTo5cwuZy7GSLibw5J7Lx6cicxk5PnuQl5j81VOQWCcDquOaje1uR3wKvKPp3HPm1A8iaibpzCnmSJM2OQ/0?wx_fmt=png)
![](https://mmbiz.qpic.cn/mmbiz_png/dyicwnSlTFTrkkX1Jsib7GxQY7tpiciaNdkG5mNQFZp4YIuwIrh6cJteFIwsbomibSk32hWbFqlt887F9lee9NYT8fQ/0?wx_fmt=png)
> Studio 异常反馈
......
......@@ -74,21 +74,6 @@
<groupId>com.dlink</groupId>
<artifactId>dlink-core</artifactId>
</dependency>
<dependency>
<groupId>com.dlink</groupId>
<artifactId>dlink-client-1.12</artifactId>
<!--<scope>provided</scope>-->
</dependency>
<dependency>
<groupId>com.dlink</groupId>
<artifactId>dlink-connector-jdbc</artifactId>
<!--<scope>provided</scope>-->
</dependency>
<dependency>
<groupId>com.dlink</groupId>
<artifactId>dlink-function</artifactId>
<!--<scope>provided</scope>-->
</dependency>
</dependencies>
<build>
<plugins>
......
......@@ -22,7 +22,7 @@ public class BannerInitializer implements ApplicationContextInitializer<Configur
if (!(applicationContext instanceof AnnotationConfigApplicationContext)) {
LogoBanner logoBanner = new LogoBanner(BannerInitializer.class, "/dlink/logo.txt", "Welcome to Dlink", 5, 6, new Color[5], true);
CustomBanner.show(logoBanner, new Description(BannerConstant.VERSION + ":", CommonConstant.PROJECT_VERSION, 0, 1)
, new Description("Github:", "https://github.com/aiwenmo/dlink", 0, 1)
, new Description("Github:", "https://github.com/DataLinkDC/dlink", 0, 1)
, new Description("公众号:", "DataLink数据中台", 0, 1)
);
}
......
# Flink AggTable 在 Dlink 的实践
## 摘要
本文讲述了 Dlink 对 Flink 的表值聚合功能的应用与增强。增强主要在于定义了 AGGTABLE 来通过 FlinkSql 进行表值聚合的实现,以下将通过两个示例 top2 与 to_map 进行讲解。
## 准备工作
### 部署 Dlink-0.2.2
#### 获取安装包
​ 百度网盘链接:https://pan.baidu.com/s/1gHZPGMhYUcpZZgOHta3Csw
​ 提取码:0202
#### 应用结构
```java
config/ -- 配置文件
|- application.yml
lib/ -- 外部依赖及Connector
|- dlink-client-1.12.jar -- 必需
|- dlink-connector-jdbc.jar
|- dlink-function-0.2.2.jar
|- flink-connector-jdbc_2.11-1.12.4.jar
|- flink-csv-1.12.4.jar
|- flink-json-1.12.4.jar
|- mysql-connector-java-8.0.21.jar
sql/
|- dlink.sql -- Mysql初始化脚本
auto.sh -- 启动停止脚本
dlink-admin.jar -- 程序包
```
#### 修改配置文件
配置数据库地址。
```yaml
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/dlink?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
username: dlink
password: dlink
driver-class-name: com.mysql.cj.jdbc.Driver
```
#### 执行与停止
```shell
# 启动
sh auto.sh start
# 停止
sh auto.sh stop
# 重启
sh auto.sh restart
# 状态
sh auto.sh status
```
### 准备测试表
#### 学生表(student)
```sql
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (
`sid` int(11) NOT NULL,
`name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
PRIMARY KEY (`sid`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
INSERT INTO `student` VALUES (1, '小明');
INSERT INTO `student` VALUES (2, '小红');
INSERT INTO `student` VALUES (3, '小黑');
INSERT INTO `student` VALUES (4, '小白');
```
#### 一维成绩表(score)
```sql
DROP TABLE IF EXISTS `score`;
CREATE TABLE `score` (
`cid` int(11) NOT NULL,
`sid` int(11) NULL DEFAULT NULL,
`cls` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`score` int(11) NULL DEFAULT NULL,
PRIMARY KEY (`cid`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
INSERT INTO `score` VALUES (1, 1, 'chinese', 90);
INSERT INTO `score` VALUES (2, 1, 'math', 100);
INSERT INTO `score` VALUES (3, 1, 'english', 95);
INSERT INTO `score` VALUES (4, 2, 'chinese', 98);
INSERT INTO `score` VALUES (5, 2, 'english', 99);
INSERT INTO `score` VALUES (6, 3, 'chinese', 99);
INSERT INTO `score` VALUES (7, 3, 'english', 100);
```
#### 前二排名表(scoretop2)
```sql
DROP TABLE IF EXISTS `scoretop2`;
CREATE TABLE `scoretop2` (
`cls` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`score` int(11) NULL DEFAULT NULL,
`rank` int(11) NOT NULL,
PRIMARY KEY (`cls`, `rank`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
```
#### 二维成绩单表(studentscore)
```sql
DROP TABLE IF EXISTS `studentscore`;
CREATE TABLE `studentscore` (
`sid` int(11) NOT NULL,
`name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`chinese` int(11) NULL DEFAULT NULL,
`math` int(11) NULL DEFAULT NULL,
`english` int(11) NULL DEFAULT NULL,
PRIMARY KEY (`sid`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
```
### 问题提出
#### 输出各科成绩前二的分数
要求输出已有学科排名前二的分数到scoretop2表中。
#### 输出二维成绩单
要求将一维成绩表转化为二维成绩单,其中不存在的成绩得分为0,并输出至studentscore表中。
## Dlink 的 AGGTABLE
​ 本文以 Flink 官方的 Table Aggregate Functions 示例 Top2 为例进行比较说明,传送门 https://ci.apache.org/projects/flink/flink-docs-release-1.13/docs/dev/table/functions/udfs/#table-aggregate-functions
### 官方 Table API 实现
```java
import org.apache.flink.api.java.tuple.Tuple2;
import org.apache.flink.table.api.*;
import org.apache.flink.table.functions.TableAggregateFunction;
import org.apache.flink.util.Collector;
import static org.apache.flink.table.api.Expressions.*;
// mutable accumulator of structured type for the aggregate function
public static class Top2Accumulator {
public Integer first;
public Integer second;
}
// function that takes (value INT), stores intermediate results in a structured
// type of Top2Accumulator, and returns the result as a structured type of Tuple2<Integer, Integer>
// for value and rank
public static class Top2 extends TableAggregateFunction<Tuple2<Integer, Integer>, Top2Accumulator> {
@Override
public Top2Accumulator createAccumulator() {
Top2Accumulator acc = new Top2Accumulator();
acc.first = Integer.MIN_VALUE;
acc.second = Integer.MIN_VALUE;
return acc;
}
public void accumulate(Top2Accumulator acc, Integer value) {
if (value > acc.first) {
acc.second = acc.first;
acc.first = value;
} else if (value > acc.second) {
acc.second = value;
}
}
public void merge(Top2Accumulator acc, Iterable<Top2Accumulator> it) {
for (Top2Accumulator otherAcc : it) {
accumulate(acc, otherAcc.first);
accumulate(acc, otherAcc.second);
}
}
public void emitValue(Top2Accumulator acc, Collector<Tuple2<Integer, Integer>> out) {
// emit the value and rank
if (acc.first != Integer.MIN_VALUE) {
out.collect(Tuple2.of(acc.first, 1));
}
if (acc.second != Integer.MIN_VALUE) {
out.collect(Tuple2.of(acc.second, 2));
}
}
}
TableEnvironment env = TableEnvironment.create(...);
// call function "inline" without registration in Table API
env
.from("MyTable")
.groupBy($("myField"))
.flatAggregate(call(Top2.class, $("value")))
.select($("myField"), $("f0"), $("f1"));
// call function "inline" without registration in Table API
// but use an alias for a better naming of Tuple2's fields
env
.from("MyTable")
.groupBy($("myField"))
.flatAggregate(call(Top2.class, $("value")).as("value", "rank"))
.select($("myField"), $("value"), $("rank"));
// register function
env.createTemporarySystemFunction("Top2", Top2.class);
// call registered function in Table API
env
.from("MyTable")
.groupBy($("myField"))
.flatAggregate(call("Top2", $("value")).as("value", "rank"))
.select($("myField"), $("value"), $("rank"));
```
### Dlink FlinkSql 实现
#### 示例
```sql
CREATE AGGTABLE aggdemo AS
SELECT myField,value,rank
FROM MyTable
GROUP BY myField
AGG BY TOP2(value) as (value,rank);
```
#### 优势
​ 可以通过 FlinkSql 来实现表值聚合的需求,降低了开发与维护成本。
#### 缺点
​ 语法固定,示例关键字必须存在并进行描述,where 可以加在 FROM 和 GROUP BY 之间。
## Dlink 本地实现各科成绩前二
​ 本示例通过 Dlink 的本地环境进行演示实现。
### 进入Dlink
![image-20210615115042539](https://mmbiz.qpic.cn/mmbiz_png/dyicwnSlTFTrkkX1Jsib7GxQY7tpiciaNdkGIAFicLZ3bwSawOianJQnNWuKAvZJ3Bb00DiaBxtxvnXgToGibPAwMFhs6A/0?wx_fmt=png)
​ 只有版本号大于等于 0.2.2-rc1 的 Dlink 才支持本文 AGGTABLE 的使用。
### 编写 FlinkSQL
```sql
jdbcconfig:='connector' = 'jdbc',
'url' = 'jdbc:mysql://127.0.0.1:3306/data?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true',
'username'='dlink',
'password'='dlink',;
CREATE TABLE student (
sid INT,
name STRING,
PRIMARY KEY (sid) NOT ENFORCED
) WITH (
${jdbcconfig}
'table-name' = 'student'
);
CREATE TABLE score (
cid INT,
sid INT,
cls STRING,
score INT,
PRIMARY KEY (cid) NOT ENFORCED
) WITH (
${jdbcconfig}
'table-name' = 'score'
);
CREATE TABLE scoretop2 (
cls STRING,
score INT,
`rank` INT,
PRIMARY KEY (cls,`rank`) NOT ENFORCED
) WITH (
${jdbcconfig}
'table-name' = 'scoretop2'
);
CREATE AGGTABLE aggscore AS
SELECT cls,score,rank
FROM score
GROUP BY cls
AGG BY TOP2(score) as (score,rank);
insert into scoretop2
select
b.cls,b.score,b.`rank`
from aggscore b
```
​ 本 Sql 使用了 Dlink 的增强特性 Fragment 机制,对 jdbc的配置进行了定义。
### 维护 FlinkSQL 及配置
![image-20210615115521967](https://mmbiz.qpic.cn/mmbiz_png/dyicwnSlTFTrkkX1Jsib7GxQY7tpiciaNdkGeibmfcst4hHVTqzFmX6LvBXqgPTFcCOWHuIxEcbNHgfnUc0mhPm1eFw/0?wx_fmt=png)
​ 编写 FlinkSQL ,配置开启 Fragment 机制,设置 Flink 集群为本地执行。点击保存。
### 同步执行INSERT
![image-20210615115714713](https://mmbiz.qpic.cn/mmbiz_png/dyicwnSlTFTrkkX1Jsib7GxQY7tpiciaNdkGApFiacyxkKERLE9FhsteTeTovcjTQHiaPKcxY6YqSukkVYZWVFGxPJibQ/0?wx_fmt=png)
​ 点击同步执行按钮运行当前编辑器中的 FlinkSQL 语句集。弹出提示信息,等待执行完成后自动关闭并刷新信息和结果。
​ 当前版本使用异步提交功能将直接提交任务到集群,Studio 不负责执行结果的记录。提交任务前请保存 FlinkSQL 和配置,否则将提交旧的语句和配置。
### 执行反馈
![image-20210615115913647](https://mmbiz.qpic.cn/mmbiz_png/dyicwnSlTFTrkkX1Jsib7GxQY7tpiciaNdkGL7Wv8Tefsn0h1USWf2VLXB2Tb3yx4K2QksiaFplehnrvz25cE0nQnlA/0?wx_fmt=png)
​ 本地执行成功,“0_admin” 为本地会话,里面存储了 Catalog。
### 同步执行SELECT查看中间过程
![image-20210615120129426](https://mmbiz.qpic.cn/mmbiz_png/dyicwnSlTFTrkkX1Jsib7GxQY7tpiciaNdkGXkEXFib5ic21kOemq6ib8kWAdLCBicicjBxU9oibmaSs4Hru8EccxKe5z0dg/0?wx_fmt=png)
​ 由于当前会话中已经存储了表的定义,此时直接选中 select 语句点击同步执行可以重新计算并展示其计算过程中产生的结果,由于 Flink 表值聚合操作机制,该结果非最终结果。
### 同步执行SELECT查看最终结果
![image-20210615121542233](https://mmbiz.qpic.cn/mmbiz_png/dyicwnSlTFTrkkX1Jsib7GxQY7tpiciaNdkG5mNQFZp4YIuwIrh6cJteFIwsbomibSk32hWbFqlt887F9lee9NYT8fQ/0?wx_fmt=png)
​ 在草稿的页面使用相同的会话可以共享 Catalog,此时只需要执行 select 查询 sink 表就可以预览最终的统计结果。
### 查看Mysql表的数据
![image-20210615120738413](https://mmbiz.qpic.cn/mmbiz_png/dyicwnSlTFTrkkX1Jsib7GxQY7tpiciaNdkGerEdvQLXGNqfm7KZT7ARaNBV0mlrUdah69JAB3miaBFBgUU3iaaowcLg/0?wx_fmt=png)
​ sink 表中只有五条数据,结果是正确的。
## Dlink 远程实现二维成绩单
​ 本示例通过 Dlink 控制远程集群来实现。
​ 远程集群的 lib 中需要上传 dlink-function.jar 。
### 编写FlinkSQL
```sql
jdbcconfig:='connector' = 'jdbc',
'url' = 'jdbc:mysql://127.0.0.1:3306/data?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true',
'username'='dlink',
'password'='dlink',;
CREATE TABLE student (
sid INT,
name STRING,
PRIMARY KEY (sid) NOT ENFORCED
) WITH (
${jdbcconfig}
'table-name' = 'student'
);
CREATE TABLE score (
cid INT,
sid INT,
cls STRING,
score INT,
PRIMARY KEY (cid) NOT ENFORCED
) WITH (
${jdbcconfig}
'table-name' = 'score'
);
CREATE TABLE studentscore (
sid INT,
name STRING,
chinese INT,
math INT,
english INT,
PRIMARY KEY (sid) NOT ENFORCED
) WITH (
${jdbcconfig}
'table-name' = 'studentscore'
);
CREATE AGGTABLE aggscore2 AS
SELECT sid,data
FROM score
GROUP BY sid
AGG BY TO_MAP(cls,score) as (data);
insert into studentscore
select
a.sid,a.name,
cast(GET_KEY(b.data,'chinese','0') as int),
cast(GET_KEY(b.data,'math','0') as int),
cast(GET_KEY(b.data,'english','0') as int)
from student a
left join aggscore2 b on a.sid=b.sid
```
​ 本实例通过表值聚合将分组后的多行转单列然后通过 GET_KEY 取值的思路来实现。同时,也使用了 Fragment 机制。
### 同步执行
![image-20210615131731449](https://mmbiz.qpic.cn/mmbiz_png/dyicwnSlTFTrkkX1Jsib7GxQY7tpiciaNdkGxHX5T3C2vr2CF9LicZicBnGZOYmpXVq343zYFPjXsae0icQ1mTVWcsugQ/0?wx_fmt=png)
​ 与示例一相似,不同点在于需要更改集群配置为 远程集群。远程集群的注册在集群中心注册,Hosts 需要填写 JobManager 的地址,HA模式则使用英文逗号分割可能出现的地址,如“127.0.0.1:8081,127.0.0.2:8081,127.0.0.3:8081”。心跳监测正常的集群实例即可用于任务执行或提交。
### Flink UI
![image-20210615131931183](https://mmbiz.qpic.cn/mmbiz_png/dyicwnSlTFTrkkX1Jsib7GxQY7tpiciaNdkGCSGp5fSGaRz0PgvFlEmWSRdiaZZHbmicvYWXnLzoNL3HWEc3mL1W2jPA/0?wx_fmt=png)
​ 打开集群的 Flink UI 可以发现刚刚提交的批任务,此时可以发现集群版本号为 1.12.2 ,而 Dlink 默认版本为 1.12.4 ,所以一般大版本内可以互相兼容。
### 查看Mysql表的数据
![image-20210615132004925](https://mmbiz.qpic.cn/mmbiz_png/dyicwnSlTFTrkkX1Jsib7GxQY7tpiciaNdkGc9NX5IzQ6Kog5oYPiaaELmCYzh3vpdUaK40hNuFPrlAWY1jlZd7QbtQ/0?wx_fmt=png)
​ 查看 Mysql 表的最终数据,发现存在四条结果,且也符合问题的要求。
......@@ -22,7 +22,7 @@ export default () => {
{
key: 'github',
title: <GithubOutlined />,
href: 'https://github.com/aiwenmo/Dlink',
href: 'https://github.com/DataLinkDC/dlink',
blankTarget: true,
},
]}
......
......@@ -37,7 +37,7 @@ const StudioMenu = (props: any) => {
checkPoint:current.task.checkPoint,
parallelism:current.task.parallelism,
maxRowNum:current.task.maxRowNum,
fragment:current.task.fragemnt,
fragment:current.task.fragment,
savePointPath:current.task.savePointPath,
jobName:current.task.alias,
};
......
......@@ -99,11 +99,10 @@ const StudioSetting = (props: any) => {
<Row>
<Col span={12}>
<Form.Item
label="Fragment" className={styles.form_item} name="fragment"
label="Fragment" className={styles.form_item} name="fragment" valuePropName="checked"
tooltip={{ title: '【增强特性】 开启FlinkSql片段机制,使用“:=”进行定义(以“;”结束),“${}”进行调用', icon: <InfoCircleOutlined /> }}
>
<Switch checkedChildren="启用" unCheckedChildren="禁用"
// defaultChecked={formVals.enabled}
/>
</Form.Item>
</Col>
......
......@@ -20,7 +20,7 @@ export default (): React.ReactNode => {
<Alert
message={intl.formatMessage({
id: 'pages.welcome.alertMessage',
defaultMessage: '实时计算平台 Dlink & Apache Flink 即将发布,目前为体验版,版本号为 0.2.1。',
defaultMessage: '实时计算平台 Dlink & Apache Flink 即将发布,目前为体验版,版本号为 0.2.2-rc1。',
})}
type="success"
showIcon
......@@ -49,7 +49,7 @@ export default (): React.ReactNode => {
>
<FormattedMessage id="pages.welcome.advancedLayout" defaultMessage="Github" />{' '}
<a
href="https://github.com/aiwenmo/dlink"
href="https://github.com/DataLinkDC/dlink"
rel="noopener noreferrer"
target="__blank"
>
......@@ -177,6 +177,22 @@ export default (): React.ReactNode => {
</ul>
</Paragraph>
</Timeline.Item>
<Timeline.Item><Text code>0.2.2-rc1</Text> <Text type="secondary">2021-06-15</Text>
<p> </p>
<Paragraph>
<ul>
<li>
<Link href="">AGGTABLE 语法实现</Link>
</li>
<li>
<Link href="">增加了 dlink-function 模块用来管理 UDF 等,其可直接上传至集群lib</Link>
</li>
<li>
<Link href="">解决了表单无法正确提交 Fragment 的问题</Link>
</li>
</ul>
</Paragraph>
</Timeline.Item>
</Timeline>
</Card>
</PageContainer>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment