Commit 3cb783b0 authored by godkaikai's avatar godkaikai

Studio添加执行模式

parent ce40970f
...@@ -29,5 +29,7 @@ public class Jar extends SuperEntity { ...@@ -29,5 +29,7 @@ public class Jar extends SuperEntity {
private String mainClass; private String mainClass;
private String paras;
private String note; private String note;
} }
...@@ -41,6 +41,8 @@ public class Task extends SuperEntity{ ...@@ -41,6 +41,8 @@ public class Task extends SuperEntity{
private Integer clusterId; private Integer clusterId;
private Integer clusterConfigurationId;
private String config; private String config;
private String note; private String note;
......
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
<result column="parallelism" property="parallelism" /> <result column="parallelism" property="parallelism" />
<result column="fragment" property="fragment" /> <result column="fragment" property="fragment" />
<result column="cluster_id" property="clusterId" /> <result column="cluster_id" property="clusterId" />
<result column="cluster_configuration_id" property="clusterConfigurationId" />
<result column="config" property="config" /> <result column="config" property="config" />
<result column="note" property="note" /> <result column="note" property="note" />
<result column="enabled" property="enabled" /> <result column="enabled" property="enabled" />
...@@ -22,7 +23,7 @@ ...@@ -22,7 +23,7 @@
<!-- 通用查询结果列 --> <!-- 通用查询结果列 -->
<sql id="Base_Column_List"> <sql id="Base_Column_List">
id, name, alias, type,check_point,save_point_path, parallelism,fragment,cluster_id,config,note, enabled, create_time, update_time id, name, alias, type,check_point,save_point_path, parallelism,fragment,cluster_id,cluster_configuration_id,config,note, enabled, create_time, update_time
</sql> </sql>
......
...@@ -389,6 +389,7 @@ CREATE TABLE `dlink_job` ( ...@@ -389,6 +389,7 @@ CREATE TABLE `dlink_job` (
`type` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '类型', `type` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '类型',
`path` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '文件路径', `path` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '文件路径',
`main_class` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '启动类', `main_class` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '启动类',
`paras` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '启动类入参',
`note` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '注释', `note` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '注释',
`enabled` tinyint(1) NOT NULL DEFAULT '1' COMMENT '是否启用', `enabled` tinyint(1) NOT NULL DEFAULT '1' COMMENT '是否启用',
`create_time` datetime DEFAULT NULL COMMENT '创建时间', `create_time` datetime DEFAULT NULL COMMENT '创建时间',
...@@ -396,4 +397,6 @@ CREATE TABLE `dlink_job` ( ...@@ -396,4 +397,6 @@ CREATE TABLE `dlink_job` (
PRIMARY KEY (`id`) PRIMARY KEY (`id`)
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
ALTER TABLE `dlink`.`dlink_task`
ADD COLUMN `cluster_configuration_id` int(11) NULL COMMENT '集群配置ID' AFTER `cluster_id`;
SET FOREIGN_KEY_CHECKS = 1; SET FOREIGN_KEY_CHECKS = 1;
...@@ -11,7 +11,7 @@ const { Text } = Typography; ...@@ -11,7 +11,7 @@ const { Text } = Typography;
const StudioSetting = (props: any) => { const StudioSetting = (props: any) => {
const {cluster,current,form,dispatch,tabs,currentSession} = props; const {cluster,clusterConfiguration,current,form,dispatch,tabs,currentSession} = props;
const getClusterOptions = ()=>{ const getClusterOptions = ()=>{
let itemList = [(<Option value={0} label={(<><Tag color="default">Local</Tag>本地环境</>)}> let itemList = [(<Option value={0} label={(<><Tag color="default">Local</Tag>本地环境</>)}>
...@@ -27,6 +27,17 @@ const StudioSetting = (props: any) => { ...@@ -27,6 +27,17 @@ const StudioSetting = (props: any) => {
return itemList; return itemList;
}; };
const getClusterConfigurationOptions = ()=>{
let itemList = [];
for(let item of clusterConfiguration){
let tag =(<><Tag color={item.enabled?"processing":"error"}>{item.type}</Tag>{item.alias}</>);
itemList.push(<Option value={item.id} label={tag}>
{tag}
</Option>)
}
return itemList;
};
form.setFieldsValue(current.task); form.setFieldsValue(current.task);
const onValuesChange = (change:any,all:any)=>{ const onValuesChange = (change:any,all:any)=>{
...@@ -39,7 +50,6 @@ const StudioSetting = (props: any) => { ...@@ -39,7 +50,6 @@ const StudioSetting = (props: any) => {
break; break;
} }
} }
// console.log(change);
dispatch&&dispatch({ dispatch&&dispatch({
type: "Studio/saveTabs", type: "Studio/saveTabs",
payload: newTabs, payload: newTabs,
...@@ -69,6 +79,56 @@ const StudioSetting = (props: any) => { ...@@ -69,6 +79,56 @@ const StudioSetting = (props: any) => {
className={styles.form_setting} className={styles.form_setting}
onValuesChange={onValuesChange} onValuesChange={onValuesChange}
> >
<Form.Item
label="执行模式" className={styles.form_item} name="type"
tooltip='指定 Flink 任务的执行模式,默认为 yarn-session'
>
<Select defaultValue="yarn-session" value="yarn-session">
<Option value="standalone">standalone</Option>
<Option value="yarn-session">yarn-session</Option>
<Option value="yarn-per-job">yarn-per-job</Option>
<Option value="yarn-application">yarn-application</Option>
</Select>
</Form.Item>
{(current.task.type=='yarn-session'||current.task.type=='standalone')?(
<Row>
<Col span={24}>
<Form.Item label="Flink集群" tooltip={`选择Flink集群进行 ${current.task.type} 模式的远程提交任务`} name="clusterId"
className={styles.form_item}>
{
currentSession.session?
(currentSession.sessionConfig&&currentSession.sessionConfig.clusterId?
(<><Badge status="success"/><Text type="success">{currentSession.sessionConfig.clusterName}</Text></>)
:(<><Badge status="error"/><Text type="danger">本地模式</Text></>)
):(<Select
style={{ width: '100%' }}
placeholder="选择Flink集群"
defaultValue={0}
optionLabelProp="label"
onChange={onChangeClusterSession}
>
{getClusterOptions()}
</Select>)
}
</Form.Item>
</Col>
</Row>):''}
{(current.task.type=='yarn-per-job'||current.task.type=='yarn-application')?(
<Row>
<Col span={24}>
<Form.Item label="Flink集群配置" tooltip={`选择Flink集群配置进行 ${current.task.type} 模式的远程提交任务`} name="clusterConfigurationId"
className={styles.form_item}>
<Select
style={{ width: '100%' }}
placeholder="选择Flink集群配置"
defaultValue={0}
optionLabelProp="label"
>
{getClusterConfigurationOptions()}
</Select>
</Form.Item>
</Col>
</Row>):''}
<Form.Item <Form.Item
label="作业名" className={styles.form_item} name="jobName" label="作业名" className={styles.form_item} name="jobName"
tooltip='设置任务名称,默认为作业名' tooltip='设置任务名称,默认为作业名'
...@@ -108,29 +168,6 @@ const StudioSetting = (props: any) => { ...@@ -108,29 +168,6 @@ const StudioSetting = (props: any) => {
> >
<Input placeholder="hdfs://..." /> <Input placeholder="hdfs://..." />
</Form.Item> </Form.Item>
<Row>
<Col span={24}>
<Form.Item label="Flink集群" tooltip="选择Flink集群进行远程提交任务" name="clusterId"
className={styles.form_item}>
{
currentSession.session?
(currentSession.sessionConfig&&currentSession.sessionConfig.clusterId?
(<><Badge status="success"/><Text type="success">{currentSession.sessionConfig.clusterName}</Text></>)
:(<><Badge status="error"/><Text type="danger">本地模式</Text></>)
):(<Select
style={{ width: '100%' }}
placeholder="选择Flink集群"
defaultValue={0}
optionLabelProp="label"
onChange={onChangeClusterSession}
>
{getClusterOptions()}
</Select>)
}
</Form.Item>
</Col>
</Row>
<Form.Item <Form.Item
label="其他配置" className={styles.form_item} label="其他配置" className={styles.form_item}
tooltip={{ title: '其他配置项,将被应用于执行环境,如 pipeline.name', icon: <InfoCircleOutlined /> }} tooltip={{ title: '其他配置项,将被应用于执行环境,如 pipeline.name', icon: <InfoCircleOutlined /> }}
...@@ -177,6 +214,7 @@ const StudioSetting = (props: any) => { ...@@ -177,6 +214,7 @@ const StudioSetting = (props: any) => {
export default connect(({Studio}: { Studio: StateType }) => ({ export default connect(({Studio}: { Studio: StateType }) => ({
cluster: Studio.cluster, cluster: Studio.cluster,
clusterConfiguration: Studio.clusterConfiguration,
current: Studio.current, current: Studio.current,
tabs: Studio.tabs, tabs: Studio.tabs,
session: Studio.session, session: Studio.session,
......
...@@ -11,7 +11,10 @@ import {StateType} from "@/pages/FlinkSqlStudio/model"; ...@@ -11,7 +11,10 @@ import {StateType} from "@/pages/FlinkSqlStudio/model";
import StudioConsole from "./StudioConsole"; import StudioConsole from "./StudioConsole";
import StudioLeftTool from "./StudioLeftTool"; import StudioLeftTool from "./StudioLeftTool";
import StudioRightTool from "./StudioRightTool"; import StudioRightTool from "./StudioRightTool";
import {listSession, showCluster, showDataBase,getFillAllByVersion} from "@/components/Studio/StudioEvent/DDL"; import {
listSession, showCluster, showDataBase, getFillAllByVersion,
showClusterConfiguration
} from "@/components/Studio/StudioEvent/DDL";
type StudioProps = { type StudioProps = {
rightClickMenu:StateType['rightClickMenu']; rightClickMenu:StateType['rightClickMenu'];
...@@ -24,6 +27,7 @@ const Studio: React.FC<StudioProps> = (props) => { ...@@ -24,6 +27,7 @@ const Studio: React.FC<StudioProps> = (props) => {
const [form] = Form.useForm(); const [form] = Form.useForm();
getFillAllByVersion('',dispatch); getFillAllByVersion('',dispatch);
showCluster(dispatch); showCluster(dispatch);
showClusterConfiguration(dispatch);
showDataBase(dispatch); showDataBase(dispatch);
listSession(dispatch); listSession(dispatch);
......
...@@ -63,6 +63,8 @@ export type TaskType = { ...@@ -63,6 +63,8 @@ export type TaskType = {
config?: [], config?: [],
clusterId?: any, clusterId?: any,
clusterName?: string, clusterName?: string,
clusterConfigurationId?: string,
clusterConfigurationName?: string,
note?: string, note?: string,
enabled?: boolean, enabled?: boolean,
createTime?: Date, createTime?: Date,
...@@ -181,6 +183,8 @@ const Model: ModelType = { ...@@ -181,6 +183,8 @@ const Model: ModelType = {
fragment: true, fragment: true,
clusterId: 0, clusterId: 0,
clusterName: "本地环境", clusterName: "本地环境",
clusterConfigurationId:undefined,
clusterConfigurationName:undefined,
maxRowNum: 100, maxRowNum: 100,
config: [], config: [],
session: '', session: '',
...@@ -214,6 +218,8 @@ const Model: ModelType = { ...@@ -214,6 +218,8 @@ const Model: ModelType = {
fragment: true, fragment: true,
clusterId: 0, clusterId: 0,
clusterName: "本地环境", clusterName: "本地环境",
clusterConfigurationId:undefined,
clusterConfigurationName:undefined,
session: '', session: '',
config: [], config: [],
maxRowNum: 100, maxRowNum: 100,
......
...@@ -25,6 +25,7 @@ const JarForm: React.FC<JarFormProps> = (props) => { ...@@ -25,6 +25,7 @@ const JarForm: React.FC<JarFormProps> = (props) => {
type: props.values.type?props.values.type:'UserApp', type: props.values.type?props.values.type:'UserApp',
path: props.values.path, path: props.values.path,
mainClass: props.values.mainClass, mainClass: props.values.mainClass,
paras: props.values.paras,
note: props.values.note, note: props.values.note,
enabled: props.values.enabled?props.values.enabled:true, enabled: props.values.enabled?props.values.enabled:true,
}); });
...@@ -68,7 +69,13 @@ const JarForm: React.FC<JarFormProps> = (props) => { ...@@ -68,7 +69,13 @@ const JarForm: React.FC<JarFormProps> = (props) => {
> >
<Input placeholder="com.dlink.app.MainApp"/> <Input placeholder="com.dlink.app.MainApp"/>
</Form.Item> </Form.Item>
<Divider orientation="left" plain>自定义配置(高优先级)</Divider> <Form.Item
name="paras"
label="执行参数"
help="指定可执行 Jar 的启动类入参,(可选)"
>
<Input placeholder="--id 1,2"/>
</Form.Item>
<Divider>基本配置</Divider> <Divider>基本配置</Divider>
<Form.Item <Form.Item
name="name" name="name"
......
...@@ -5,6 +5,7 @@ export type JarTableListItem = { ...@@ -5,6 +5,7 @@ export type JarTableListItem = {
type: string, type: string,
path: string, path: string,
mainClass: string, mainClass: string,
paras: string,
note: string, note: string,
enabled: boolean, enabled: boolean,
createTime: Date, createTime: Date,
......
...@@ -107,13 +107,15 @@ const JarTableList: React.FC<{}> = (props: any) => { ...@@ -107,13 +107,15 @@ const JarTableList: React.FC<{}> = (props: any) => {
title: '文件路径', title: '文件路径',
sorter: true, sorter: true,
dataIndex: 'path', dataIndex: 'path',
hideInTable: false,
}, },
{ {
title: '启动类', title: '启动类',
sorter: true, sorter: true,
dataIndex: 'mainClass', dataIndex: 'mainClass',
hideInTable: false, },{
title: '执行参数',
sorter: true,
dataIndex: 'paras',
}, },
{ {
title: '注释', title: '注释',
......
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