Commit 4bea4875 authored by zhu-mingye's avatar zhu-mingye

Merge remote-tracking branch 'origin/dev' into dev

parents 8d573cf5 a4a8eb83
......@@ -118,6 +118,7 @@ Dinky(原 Dlink):
| | | 新增 Doris 数据源注册及测试 | 0.6.0 |
| | | 新增 Phoenix 数据源注册及测试 | 0.6.0 |
| | | 新增 SqlServer 数据源注册及测试 | 0.6.0 |
| | | 新增 Hive 数据源注册及测试 | 0.6.0 |
| | 报警实例管理 | 新增 钉钉报警 | 0.6.0 |
| | | 新增 微信企业号报警 | 0.6.0 |
| | 报警组管理 | 新增 报警组管理 | 0.6.0 |
......
......@@ -4,6 +4,7 @@ import com.dlink.assertion.Asserts;
import com.dlink.context.SpringContextUtils;
import com.dlink.daemon.task.DaemonFactory;
import com.dlink.daemon.task.DaemonTaskConfig;
import com.dlink.gateway.GatewayType;
import com.dlink.model.*;
import com.dlink.service.*;
import com.dlink.utils.JSONUtil;
......@@ -114,7 +115,7 @@ public class Job2MysqlHandler implements JobHandler {
if (Asserts.isNotNull(job.getJobConfig().getJarId())) {
jar = jarService.getById(job.getJobConfig().getJarId());
}
if (Asserts.isNotNullCollection(job.getJids())) {
if (Asserts.isNotNullCollection(job.getJids()) && !GatewayType.LOCAL.equalsValue(job.getJobConfig().getType())) {
for (String jid : job.getJids()) {
JobInstance jobInstance = history.buildJobInstance();
jobInstance.setHistoryId(job.getId());
......
......@@ -158,6 +158,14 @@
<include>dlink-metadata-doris-${project.version}.jar</include>
</includes>
</fileSet>
<fileSet>
<directory>${project.parent.basedir}/dlink-metadata/dlink-metadata-phoenix/target
</directory>
<outputDirectory>lib</outputDirectory>
<includes>
<include>dlink-metadata-phoenix-${project.version}.jar</include>
</includes>
</fileSet>
<fileSet>
<directory>${project.parent.basedir}/dlink-alert/dlink-alert-dingtalk/target
</directory>
......
......@@ -68,17 +68,17 @@ public class LineageColumnGenerator {
Trans trans = entry.getValue();
if (trans instanceof SinkTrans) {
TableCA tableCA = new TableCA((SinkTrans) trans);
matchSinkField(tableCA,trans);
matchSinkField(tableCA, trans);
searchColumnCAId(tableCA);
}
}
chainRelation();
}
private void matchSinkField(TableCA tableCA,Trans trans){
for(ColumnCA columnCA: columnCAS){
for(String fieldName: tableCA.getFields()){
if(columnCA.getName().equals(fieldName)){
private void matchSinkField(TableCA tableCA, Trans trans) {
for (ColumnCA columnCA : columnCAS) {
for (String fieldName : tableCA.getFields()) {
if (columnCA.getName().equals(fieldName)) {
int cid = index++;
ColumnCA sinkColumnCA = new ColumnCA(cid, fieldName, fieldName, fieldName, fieldName, fieldName, tableCA, trans);
columnCASMaps.put(cid, sinkColumnCA);
......@@ -124,7 +124,7 @@ public class LineageColumnGenerator {
break;
}
}
if(columnCA.getId()==cid){
if (columnCA.getId() == cid) {
return;
}
if (!isHad) {
......@@ -176,20 +176,22 @@ public class LineageColumnGenerator {
}
private void chainRelation() {
Set<NodeRel> nodeRelsChain = new HashSet<>();
for (Integer item : sourceColumns) {
nodeRelsChain.add(new NodeRel(item, getNextSuf(item)));
buildSinkSuf(item, item);
}
columnCASRelChain = nodeRelsChain;
}
private Integer getNextSuf(Integer sufId) {
private void buildSinkSuf(Integer preId, Integer sourcePreId) {
for (NodeRel nodeRel : columnCASRel) {
if (nodeRel.getPreId() == sufId) {
return getNextSuf(nodeRel.getSufId());
if (nodeRel.getPreId() == preId) {
Integer nextSufId = nodeRel.getSufId();
if (sinkColumns.contains(nextSufId)) {
columnCASRelChain.add(new NodeRel(sourcePreId, nextSufId));
continue;
}
buildSinkSuf(nextSufId, sourcePreId);
}
}
return sufId;
}
public Map<Integer, Trans> getTransMaps() {
......
......@@ -115,6 +115,11 @@ public class MapParseUtils {
}
Deque<Integer> stack = new LinkedList<>();
for (int i = 0; i < inStr.length(); i++) {
if (inStr.charAt(i) == ']' && stack.size() == 0) {
selects.add(inStr.substring(startIndex, i));
startIndex = i + 1;
return selects;
}
if (inStr.charAt(i) == ',' && stack.size() == 0) {
selects.add(inStr.substring(startIndex, i));
startIndex = i + 1;
......
......@@ -28,7 +28,7 @@ public class LineageTest {
") WITH (\n" +
" 'connector' = 'print'\n" +
");\n" +
"insert into TT select a||c A ,b B from ST";
"insert into TT select a||c A ,b||c B from ST";
LineageResult result = LineageBuilder.getLineage(sql);
System.out.println("end");
}
......
......@@ -127,9 +127,9 @@ public abstract class Executor {
}
public void initEnvironment() {
if (executorSetting.getCheckpoint() != null && executorSetting.getCheckpoint() > 0) {
/*if (executorSetting.getCheckpoint() != null && executorSetting.getCheckpoint() > 0) {
environment.enableCheckpointing(executorSetting.getCheckpoint());
}
}*/
if (executorSetting.getParallelism() != null && executorSetting.getParallelism() > 0) {
environment.setParallelism(executorSetting.getParallelism());
}
......@@ -140,9 +140,9 @@ public abstract class Executor {
}
public void updateEnvironment(ExecutorSetting executorSetting) {
if (executorSetting.getCheckpoint() != null && executorSetting.getCheckpoint() > 0) {
/*if (executorSetting.getCheckpoint() != null && executorSetting.getCheckpoint() > 0) {
environment.enableCheckpointing(executorSetting.getCheckpoint());
}
}*/
if (executorSetting.getParallelism() != null && executorSetting.getParallelism() > 0) {
environment.setParallelism(executorSetting.getParallelism());
}
......
......@@ -770,6 +770,9 @@ export default (): React.ReactNode => {
<li>
<Link>优化 Studio血缘分析为字段级</Link>
</li>
<li>
<Link>新增 Hive 数据源注册、元数据、查询和执行</Link>
</li>
</ul>
</Paragraph>
</Timeline.Item>
......
......@@ -13,32 +13,37 @@
- 参考手册
- FlinkSQL Studio
- [Studio介绍](/zh-CN/administrator-guide/Studio/studio_introduce.md)
- 作业和目录创建
- 作业管理
- 作业开发
- 作业配置
- 作业管理
- 会话管理
- 作业提交
- 注册中心
- 集群实例
- 集群配置
- [集群管理](/zh-CN/administrator-guide/registerCenter/cluster_manage.md)
- [数据源管理](/zh-CN/administrator-guide/registerCenter/datasource_manage.md)
- [告警管理](/zh-CN/administrator-guide/registerCenter/warning.md)
- jar管理
- [jar管理](/zh-CN/administrator-guide/registerCenter/jar_manager.md)
- 文档管理
- 元数据管理
- [元数据管理](/zh-CN/administrator-guide/metadata.md)
- [快速使用快捷键](/zh-CN/administrator-guide/Hotkey.md)
- 系统设置
- 用户管理
- Flink设置
- [用户管理](/zh-CN/administrator-guide/system_setting/user_management.md)
- [Flink设置](/zh-CN/administrator-guide/system_setting/Flink_Setting.md)
- 运维中心
- 生命周期管理
- 作业监控
- openapi
- 扩展
- 集成
- 其他
- [扩展Flink版本](/zh-CN/extend/flinkversion.md)
- [扩展连接器](/zh-CN/extend/connector.md)
- [扩展数据源](/zh-CN/extend/datasource.md)
- [FlinkSQL 编辑器自动补全函数](/zh-CN/extend/completion.md)
- 最佳实践
- [Yarn提交实践指南](/zh-CN/practice/yarnsubmit.md)
- [Dlink 核心概念及实现原理详解](/zh-CN/practice/principle.md)
- [AGGTABLE 表值聚合的实践](/zh-CN/practice/aggtable.md)
- 扩展
- 集成
- 集成指南
- [Flink-CDC集成](/zh-CN/extend/flinkcdc.md)
- [Flink-CDC-Kafka多源合并](/zh-CN/extend/Flink_CDC_kafka_Multi_source_merger.md)
- [hive集成](/zh-CN/extend/hive.md)
......@@ -49,12 +54,10 @@
- [Flink UDF集成](/zh-CN/extend/udf.md)
- [DolphinScheduler集成](/zh-CN/extend/dolphinscheduler.md)
- [DataSphereStudio集成](/zh-CN/extend/dataspherestudio.md)
- 其他
- [扩展Flink版本](/zh-CN/extend/flinkversion.md)
- [扩展连接器](/zh-CN/extend/connector.md)
- [扩展数据源](/zh-CN/extend/datasource.md)
- [FlinkSQL 编辑器自动补全函数](/zh-CN/extend/completion.md)
- 开发者指南
- [如何贡献](/zh-CN/developer-guide/how_contribute.md)
- [本地调试](/zh-CN/developer-guide/local_debug.md)
- [远程调试](/zh-CN/developer-guide/remote_debug.md)
- 常见问题
- [致谢](/zh-CN/others/thanks.md)
- [交流与贡献](/zh-CN/others/comminicate.md)
......
保存
```
Ctrl + s
```
校验
```
Alt + 2
```
美化
```
Alt + 3
```
搜索
```
Ctrl + F
```
替换
```
Ctrl + H
```
撤销
```
Ctrl + Z
```
重做
```
Ctrl + Y
```
注释
```
Ctrl + /
```
缩进
```
选中 + Tab
```
取消缩进
```
选中 + Shift + Tab
```
选中后续
```
Shift + Alt + Right
```
格式化
```
Shift + Alt + F
```
编辑多行
```
Ctrl + Shift + Up/Down
```
复制一行
```
Shift + Alt + Up/Down
```
删除一行
```
Ctrl + Shift + K
```
匹配下一个
```
Ctrl + F3
```
匹配上一个
```
Ctrl + Shift + F3
```
前往下一个高亮
```
F7
```
前往上一个高亮
```
Shift +F7
```
前面追加换行
```
Ctrl + Shift + End
```
追加换行
```
Ctrl + End
```
上下换位
```
Alt + Up/Down
```
折叠/展开
```
Ctrl + Shift + [/]
```
全屏
```
F2
```
关闭弹框及全屏
```
Esc
```
更多快捷键
```
F1
```
当用户查看或者使用数据源中的DDL或者DML,可通过元数据中心获取数据源中的相关DDL或者DML。目前元数据中心包含:
- **表信息**
- **字段信息**
- **SQL生成**
其中在SQL生成中又包括:
- **FlinkDDL语句**
- **SELECT语句**
- **SQLDDL语句**
首先进入FlinkSQL Studio中的元数据,选择已经配置好的数据源,会出现数据源对应的schema。
![进入元数据](http://www.aiwenmo.com/dinky/dev/docs/%E8%BF%9B%E5%85%A5%E5%85%83%E6%95%B0%E6%8D%AE.png)
![选择源数据](http://www.aiwenmo.com/dinky/dev/docs/%E9%80%89%E6%8B%A9%E6%BA%90%E6%95%B0%E6%8D%AE.png)
![schema信息](http://www.aiwenmo.com/dinky/dev/docs/schema%E4%BF%A1%E6%81%AF.png)
出现以上schema后,查看schema下的表,右键单击schema下的表即可看到表信息,字段信息及SQL生成。
![表信息](http://www.aiwenmo.com/dinky/dev/docs/%E8%A1%A8%E4%BF%A1%E6%81%AF.png)
![字段信息](http://www.aiwenmo.com/dinky/dev/docs/%E5%AD%97%E6%AE%B5%E4%BF%A1%E6%81%AF.png)
![SQL生成](http://www.aiwenmo.com/dinky/dev/docs/SQL%E7%94%9F%E6%88%90.png)
如何配置数据源请参考[数据源管理](/zh-CN/administrator-guide/registerCenter/datasource_manage.md)
当用户提交FlinkSQL作业时,首先要保证安装了Flink集群。Flink当前支持的集群模式包括:
- StandAlone集群
- Yarn集群
- Kubernetes集群
对于以上的三种集群而言,Dinky为用户提供了两种集群管理方式,一种是集群实例管理,一种是集群配置管理。
**需要说明的是:**
- StandAlone集群适用于既可以做为查询使用,又可以将作业异步提交到远程集群
- Yarn Session和Kubernetes Session适用于既可以做为查询使用,又可以将作业异步提交到远程集群
- Yarn Perjob,Yarn Application和Kubernetes Application适用于异步提交
## 集群实例管理
集群实例管理适用于StandAlone,Yarn Session和Kubernetes Session这三种类型配置。
### 集群配置
首先进入注册中心的集群管理中的集群实例管理,新建一个集群实例,点击新建,添加Flink集群,参数配置完成后,点击提交即可。
![实例新建](http://www.aiwenmo.com/dinky/dev/docs/%E5%AE%9E%E4%BE%8B%E6%96%B0%E5%BB%BA.png)
![实例配置提交](http://www.aiwenmo.com/dinky/dev/docs/%E5%AE%9E%E4%BE%8B%E9%85%8D%E7%BD%AE%E6%8F%90%E4%BA%A4.png)
![实例配置提交1](http://www.aiwenmo.com/dinky/dev/docs/%E5%AE%9E%E4%BE%8B%E9%85%8D%E7%BD%AE%E6%8F%90%E4%BA%A41.png)
**参数配置说明:**
- **名称:** 自定义(必填)
- **别名:** 自定义
- **类型:** 支持StandAlone,Yarn Session和Kubernetes Session三种类型
- **JobManager HA地址:** JobManager的RestAPI地址,当有多个RestAPI地址时。采用英文逗号隔开
- **注释:** 自定义
当集群实例配置完成后,点击心跳,会出现检测心跳
![心跳检查](http://www.aiwenmo.com/dinky/dev/docs/%E5%BF%83%E8%B7%B3%E6%A3%80%E6%9F%A5.png)
点击回收,会将过去的集群实例进行回收
![回收](http://www.aiwenmo.com/dinky/dev/docs/%E5%9B%9E%E6%94%B6.png)
### 集群实例编辑
当集群配置完成后,用户可以对集群实例做编辑修改。
首先进入注册中心集群实例管理,在列表中找到对应的集群实例,点击"编辑"后,编辑集群
![集群实例编辑](http://www.aiwenmo.com/dinky/dev/docs/%E9%9B%86%E7%BE%A4%E5%AE%9E%E4%BE%8B%E7%BC%96%E8%BE%91.png)
![编辑集群](http://www.aiwenmo.com/dinky/dev/docs/%E7%BC%96%E8%BE%91%E9%9B%86%E7%BE%A4.png)
### 集群实例删除
用户可以对所添加的集群实例进行删除。
首先进入注册中心中的集群实例管理,在列表中找到对应的集群实例,点击"删除"后,删除集群!
![集群实例删除](http://www.aiwenmo.com/dinky/dev/docs/%E9%9B%86%E7%BE%A4%E5%AE%9E%E4%BE%8B%E5%88%A0%E9%99%A4.png)
![集群删除](http://www.aiwenmo.com/dinky/dev/docs/%E9%9B%86%E7%BE%A4%E5%88%A0%E9%99%A4.png)
### 搜索
当用户集群实例配置完成后,配置的信息会显示在列表中,用户可以通过名称,别名,创建时间对配置的作业进行查找。
![搜索](http://www.aiwenmo.com/dinky/dev/docs/%E6%90%9C%E7%B4%A2.png)
## 集群配置管理
集群配置管理适用于Yarn Perjob,Yarn Application和Kubernetes Application这三种类型配置。
### 集群配置
首先进入注册中心的集群管理中的集群配置管理,点击"新建"后,可以创建集群配置,参数配置完成后,点击"测试"及"完成"即可。
![创建集群配置1](http://www.aiwenmo.com/dinky/dev/docs/%E5%88%9B%E5%BB%BA%E9%9B%86%E7%BE%A4%E9%85%8D%E7%BD%AE1.png)
![创建集群配置2](http://www.aiwenmo.com/dinky/dev/docs/%E5%88%9B%E5%BB%BA%E9%9B%86%E7%BE%A4%E9%85%8D%E7%BD%AE2.png)
**参数配置说明:**
- **类型:** 支持Flink on Yarn和Flink on Kubernetes
- **hadoop配置**
- **配置文件路径:** hadoop配置文件路径,指定配置文件路径(末尾无/),需要包含以下文件:core-site.xml,hdfs-site.xml,yarn-site.xml
- **自定义配置(高优先级)**
- **ha.zookeeper.quorum:** zookeeper访问地址
- **其他配置:** zookeeper的参数配置(默认不填写)
- **Flink配置**
- **lib 路径:** 指定 lib 的 hdfs 路径(末尾无/),需要包含 Flink 运行时的依赖
- **配置文件路径:**指定 flink-conf.yaml 的具体路径(末尾无/),必填
- **自定义配置(高优先级):** Flink参数配置
- **基本配置**
- **标识:** 唯一英文标识(必填)
- **名称:** 自定义
- **注释:** 自定义
- **是否启用:** 默认禁用,需要开启
参数配置完成后,点击"测试",会显示测试连接成功。
![集群测试](http://www.aiwenmo.com/dinky/dev/docs/%E9%9B%86%E7%BE%A4%E6%B5%8B%E8%AF%95.png)
待测试连接成功后,选择完成即可。至此集群配置成功,可连接远程集群进行作业提交。
### 集群编辑
当集群配置完成后,用户可以对集群配置做编辑修改。
首先进入注册中心集群配置管理,在列表中找到对应的集群名称,点击"编辑"后,维护集群配置
![集群配置编辑](http://www.aiwenmo.com/dinky/dev/docs/%E9%9B%86%E7%BE%A4%E9%85%8D%E7%BD%AE%E7%BC%96%E8%BE%91.png)
![维护集群配置](http://www.aiwenmo.com/dinky/dev/docs/%E7%BB%B4%E6%8A%A4%E9%9B%86%E7%BE%A4%E9%85%8D%E7%BD%AE.png)
### 集群删除
用户可以对所添加的集群配置进行删除。
首先进入注册中心中的集群配置管理,,在列表中找到对应的集群,点击"删除"后,删除集群
![集群配置删除](http://www.aiwenmo.com/dinky/dev/docs/%E9%9B%86%E7%BE%A4%E9%85%8D%E7%BD%AE%E5%88%A0%E9%99%A4.png)
![删除集群配置](http://www.aiwenmo.com/dinky/dev/docs/%E5%88%A0%E9%99%A4%E9%9B%86%E7%BE%A4%E9%85%8D%E7%BD%AE.png)
### 搜索
当用户集群配置完成后,配置的信息会显示在列表中,用户可以通过名称,别名,创建时间对配置的作业进行查找。
![搜索](http://www.aiwenmo.com/dinky/dev/docs/%E6%90%9C%E7%B4%A2.png)
**说明:** 当集群配置的作业异步提交成功,可以看到所作业提交后的实例,并如果集群实例一样,可以对所在的集群实例进行回收,删除,编辑等操作。集群实例的操作步骤请查看集群实例管理部分。
......@@ -16,7 +16,7 @@
**Flink连接配置:** 避免私密信息泄露,同时复用连接配置,在FlinkSQL中可使用${名称}来加载连接配置,如${ods},说明:名称指的是英文唯一标识,即如图所示的名称。注意需要开启全局变量(原片段机制);
**Flink连接模板:** Flink连接模板作用是为生成FlinkSQL DDL而扩展的功能。其中${schemaName}动态获取数据库,${tableName}动态获取表名称。其他参数可根据需求添加;
**Flink连接模板:** Flink连接模板作用是为生成FlinkSQL DDL而扩展的功能。其中${schemaName}动态获取数据库,${tableName}动态获取表名称。更多参数请参考[Flink官网](https://nightlies.apache.org/flink/flink-docs-master/docs/connectors/table/overview/);
**注释:** 自定义;
......
当用户使用jar包提交Flink应用时,可以在jar包管理中对所需程序进行管理。
## Jar包配置
首先进入注册中心的jar管理,点击“新建”,进入创建Jar配置界面。
![新建](http://www.aiwenmo.com/dinky/dev/docs/%E6%96%B0%E5%BB%BA.png)
![创建jar配置](http://www.aiwenmo.com/dinky/dev/docs/%E5%88%9B%E5%BB%BAjar%E9%85%8D%E7%BD%AE.png)
**参数配置说明:**
- **Jar配置:**
- 默认:** User App
- **文件路径:** 指定HDFS上的文件路径,即Flink提交的jar包程序
- **启动类:** 指定可执行 Jar 的启动类,(可选)
- **执行参数:** 指定可执行 Jar 的启动类入参,(可选)
- **基本配置:**
- **标识:** 英文唯一标识(必选)
- **名称:** 自定义
- **注释:** 自定义
- **是否启用:** 默认启用
Jar包配置完成后,就可以正常提交运行。
如果可行性jar包出错,用户可以对其进行编辑修改。
## Jar包编辑
用户可以对所添加的可执行Jar包配置做编辑修改。
首先进入注册中心的jar包管理中,点击编辑,即可对可执行Jar配置进行修改。
![jar编辑](http://www.aiwenmo.com/dinky/dev/docs/jar%E7%BC%96%E8%BE%91.png)
![维护jar包配置](http://www.aiwenmo.com/dinky/dev/docs/%E7%BB%B4%E6%8A%A4jar%E5%8C%85%E9%85%8D%E7%BD%AE.png)
## Jar删除
用户可以对所添加的可执行Jar包配置做删除。
首先进入注册中心的jar包管理中,点击删除,即可对可执行Jar配置进行删除。
![jar配置删除](http://www.aiwenmo.com/dinky/dev/docs/jar%E9%85%8D%E7%BD%AE%E5%88%A0%E9%99%A4.png)
![删除jar](http://www.aiwenmo.com/dinky/dev/docs/%E5%88%A0%E9%99%A4jar.png)
**说明:** 目前jar包提交的方式还尚在开发阶段,不适合在生产使用。用户只能跑一些demo
\ No newline at end of file
......@@ -7,5 +7,6 @@
- Phoenix
- Doris(Starrocks)
- ClickHouse
- Hive
使用以上数据源,请查阅注册中心[数据源管理](/zh-CN/administrator-guide/registerCenter/datasource_manage.md),配置数据源连接
\ No newline at end of file
This diff is collapsed.
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