This is an automated email from the ASF dual-hosted git repository.
benjobs pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/incubator-streampark.git
The following commit(s) were added to refs/heads/dev by this push:
new f2c23ff16 [Fix]: spark app error (#4086)
f2c23ff16 is described below
commit f2c23ff169d02c792f36a76537fab10e17d78b0a
Author: Kriszu <[email protected]>
AuthorDate: Tue Sep 24 23:17:12 2024 +0800
[Fix]: spark app error (#4086)
* [Fix]: spark app error
* fix: web ui text
---
.../src/api/flink/app.type.ts | 2 +-
.../src/components/Modal/src/props.ts | 6 ++--
.../src/locales/lang/en/spark/app.ts | 18 +++++------
.../src/locales/lang/en/spark/home.ts | 3 +-
.../src/locales/lang/zh-CN/spark/app.ts | 15 +++++-----
.../src/locales/lang/zh-CN/spark/home.ts | 3 +-
.../flink/app/components/AppDetail/DetailTab.vue | 1 -
.../components/AppView/StopApplicationModal.vue | 2 +-
.../src/views/flink/app/styles/Add.less | 10 +++++--
.../src/views/spark/app/components/DetailTab.vue | 17 ++++++-----
.../src/views/spark/app/components/ProgramArgs.vue | 16 +++++-----
.../src/views/spark/app/components/SparkSql.vue | 14 ++-------
.../spark/app/components/SparkSqlDifferent.vue | 2 +-
.../views/spark/app/components/SparkSqlReview.vue | 4 +--
.../src/views/spark/app/components/State.tsx | 8 ++---
.../views/spark/app/components/VariableReview.vue | 12 ++++----
.../src/views/spark/app/create.vue | 18 ++++-------
.../src/views/spark/app/detail.vue | 2 +-
.../src/views/spark/app/edit.vue | 19 +++++-------
.../src/views/spark/app/hooks/useAppFormSchema.tsx | 4 +--
.../src/views/spark/app/hooks/useSparkAction.tsx | 16 +++++-----
.../src/views/spark/app/hooks/useSparkRender.tsx | 35 ++--------------------
.../views/spark/app/hooks/useSparkTableAction.ts | 10 ++-----
.../src/views/spark/app/index.vue | 8 ++---
.../src/views/spark/home/components/Modal.vue | 2 +-
.../src/views/spark/home/index.vue | 8 ++---
26 files changed, 104 insertions(+), 151 deletions(-)
diff --git
a/streampark-console/streampark-console-webapp/src/api/flink/app.type.ts
b/streampark-console/streampark-console-webapp/src/api/flink/app.type.ts
index cd89292d4..b1c604990 100644
--- a/streampark-console/streampark-console-webapp/src/api/flink/app.type.ts
+++ b/streampark-console/streampark-console-webapp/src/api/flink/app.type.ts
@@ -151,7 +151,7 @@ export interface CancelParam {
id: string;
restoreOrTriggerSavepoint: boolean;
drain: boolean;
- nativeFormat: boolean;
+ nativeFormat?: boolean;
savepointPath: string;
}
// create Params
diff --git
a/streampark-console/streampark-console-webapp/src/components/Modal/src/props.ts
b/streampark-console/streampark-console-webapp/src/components/Modal/src/props.ts
index 911af43a7..809b309e9 100644
---
a/streampark-console/streampark-console-webapp/src/components/Modal/src/props.ts
+++
b/streampark-console/streampark-console-webapp/src/components/Modal/src/props.ts
@@ -1,4 +1,4 @@
-import type { PropType, CSSProperties } from 'vue';
+import type { PropType, CSSProperties, HTMLAttributes } from 'vue';
import type { ModalWrapperProps } from './typing';
import { ButtonProps } from 'ant-design-vue/es/button/buttonTypes';
import { useI18n } from '/@/hooks/web/useI18n';
@@ -67,9 +67,9 @@ export const basicProps = Object.assign({}, modalProps, {
okType: { type: String, default: 'primary' },
- okButtonProps: Object as PropType<ButtonProps>,
+ okButtonProps: Object as PropType<ButtonProps & HTMLAttributes>,
- cancelButtonProps: Object as PropType<ButtonProps>,
+ cancelButtonProps: Object as PropType<ButtonProps & HTMLAttributes>,
title: { type: String },
diff --git
a/streampark-console/streampark-console-webapp/src/locales/lang/en/spark/app.ts
b/streampark-console/streampark-console-webapp/src/locales/lang/en/spark/app.ts
index 7a02aa2a2..58bc169c7 100644
---
a/streampark-console/streampark-console-webapp/src/locales/lang/en/spark/app.ts
+++
b/streampark-console/streampark-console-webapp/src/locales/lang/en/spark/app.ts
@@ -77,13 +77,13 @@ export default {
jmMemoryOptions: 'JM Memory',
tmMemoryOptions: 'TM Memory',
podTemplate: 'Kubernetes Pod Template',
- flinkCluster: 'Flink Cluster',
+ sparkCluster: 'Spark Cluster',
yarnQueue: 'Yarn Queue',
mavenPom: 'Maven POM',
uploadJar: 'Upload Dependency Jar File',
kubernetesNamespace: 'Kubernetes Namespace',
kubernetesClusterId: 'Kubernetes Cluster ID',
- flinkBaseDockerImage: 'Flink Base Docker Image',
+ sparkBaseDockerImage: 'Spark Base Docker Image',
restServiceExposedType: 'Rest-Service Exposed Type',
resourceFrom: 'Resource Source',
uploadJobJar: 'Upload Jar File',
@@ -103,8 +103,6 @@ export default {
startTime: 'Start Time',
endTime: 'End Time',
hadoopUser: 'Hadoop User',
- restoreModeTip:
- 'Flink 1.15 and later supports restore mode; generally, this parameter
does not need to be set',
success: 'Submission Successful',
appidCheck: 'appId cannot be empty!',
release: {
@@ -122,7 +120,7 @@ export default {
},
detail: {
detailTitle: 'Job Details',
- flinkWebUi: 'Flink Web UI',
+ webUI: 'Spark Web UI',
compareConfig: 'Compare Configuration',
compareSparkSql: 'Compare Spark SQL',
candidate: 'Candidate',
@@ -211,7 +209,7 @@ export default {
start: 'Start Job',
cancel: 'Stop Job',
detail: 'Job Details',
- startLog: 'View Flink Start Log',
+ startLog: 'View Spark Start Log',
abort: 'Terminate Job',
copy: 'Copy Job',
remapping: 'Remap Job',
@@ -269,7 +267,7 @@ export default {
'Characters must be (Chinese or English or "-" or "_") and cannot have
two consecutive spaces',
appNameNotValid:
'Job name is invalid. Characters must be (Chinese or English or "-" or
"_") and cannot have two consecutive spaces. Please check',
- flinkClusterIsRequiredMessage: 'Flink cluster is required',
+ sparkClusterIsRequiredMessage: 'Spark cluster is required',
sparkSqlIsRequiredMessage: 'Spark SQL is required',
tagsPlaceholder: 'Please enter tags, if more than one, separate with
commas (,)',
parallelismPlaceholder: 'Parallelism for running the program',
@@ -285,9 +283,9 @@ export default {
kubernetesClusterIdRequire:
'Lowercase letters, numbers, "-", and must start and end with
alphanumeric characters, and not exceed 45 characters',
kubernetesClusterIdIsRequiredMessage: 'Kubernetes Cluster ID is required',
- flinkImagePlaceholder:
- 'Please enter the tag of the Flink base Docker image, e.g.,
flink:1.13.0-scala_2.11-java8',
- flinkImageIsRequiredMessage: 'Flink base Docker image is required',
+ sparkImagePlaceholder:
+ 'Please enter the tag of the spark base Docker image, e.g.,
spark:1.13.0-java8',
+ sparkImageIsRequiredMessage: 'spark base Docker image is required',
k8sRestExposedTypePlaceholder: 'Kubernetes Rest-Service Exposed Type',
hadoopXmlConfigFileTips:
'Automatically copy configuration file from system environment
parameters',
diff --git
a/streampark-console/streampark-console-webapp/src/locales/lang/en/spark/home.ts
b/streampark-console/streampark-console-webapp/src/locales/lang/en/spark/home.ts
index 209702450..b3ef87b7d 100644
---
a/streampark-console/streampark-console-webapp/src/locales/lang/en/spark/home.ts
+++
b/streampark-console/streampark-console-webapp/src/locales/lang/en/spark/home.ts
@@ -20,7 +20,8 @@ export default {
searchByName: 'Search by Spark Name',
conf: 'Spark Conf',
sync: 'Sync Conf',
- edit: 'Edit Spark Env',
+ edit: 'Edit Spark Home',
+ delete: 'Are you sure delete this spark home ?',
tips: {
remove: 'The current spark home has been successfully deleted.',
setDefault: 'Successfully set the default spark home.',
diff --git
a/streampark-console/streampark-console-webapp/src/locales/lang/zh-CN/spark/app.ts
b/streampark-console/streampark-console-webapp/src/locales/lang/zh-CN/spark/app.ts
index 501ac24fd..495c04a85 100644
---
a/streampark-console/streampark-console-webapp/src/locales/lang/zh-CN/spark/app.ts
+++
b/streampark-console/streampark-console-webapp/src/locales/lang/zh-CN/spark/app.ts
@@ -77,13 +77,13 @@ export default {
jmMemoryOptions: 'JM内存',
tmMemoryOptions: 'TM内存',
podTemplate: 'Kubernetes Pod 模板',
- flinkCluster: 'Flink集群',
+ sparkCluster: 'Flink集群',
yarnQueue: 'Yarn队列',
mavenPom: 'maven pom',
uploadJar: '上传依赖Jar文件',
kubernetesNamespace: 'Kubernetes 命名空间',
kubernetesClusterId: 'Kubernetes ClusterId',
- flinkBaseDockerImage: 'Flink 基础docker镜像',
+ sparkBaseDockerImage: 'Spark 基础docker镜像',
restServiceExposedType: 'Rest-Service Exposed Type',
resourceFrom: '资源来源',
uploadJobJar: '上传jar文件',
@@ -103,7 +103,6 @@ export default {
startTime: '启动时间',
endTime: '结束时间',
hadoopUser: 'Hadoop User',
- restoreModeTip: 'flink 1.15开始支持restore模式,一般情况下不用设置该参数',
success: '提交成功',
appidCheck: 'appId 不能为空!',
release: {
@@ -121,7 +120,7 @@ export default {
},
detail: {
detailTitle: '应用详情',
- flinkWebUi: 'Flink Web UI',
+ webUI: 'Spark Web UI',
compareConfig: '比较配置',
compareSparkSql: '比较 Spark SQL',
candidate: '侯选',
@@ -209,7 +208,7 @@ export default {
start: '启动作业',
cancel: '取消作业',
detail: '作业详情',
- startLog: '查看 Flink 启动日志',
+ startLog: '查看 Spark 启动日志',
abort: '终止作业',
copy: '复制作业',
remapping: '重新映射作业',
@@ -264,7 +263,7 @@ export default {
appNameRoleContent: '字符必须是(中文 或 英文 或 "-" 或 "_"),不能出现两个连续的空格',
appNameNotValid:
'作业名称无效。字符必须是(中文 或 英文 或 "-" 或 "_"),不能出现两个连续的空格,请检查',
- flinkClusterIsRequiredMessage: 'Flink集群必填',
+ sparkClusterIsRequiredMessage: 'spark集群必填',
sparkSqlIsRequiredMessage: 'Spark SQL必填',
tagsPlaceholder: '请输入标签,如果超过一个,用逗号(,)分隔',
parallelismPlaceholder: '运行程序的并行度',
@@ -280,8 +279,8 @@ export default {
kubernetesClusterIdRequire:
'小写字母、数字、“-”,并且必须以字母数字字符开头和结尾,并且不超过45个字符',
kubernetesClusterIdIsRequiredMessage: 'Kubernetes ClusterId 必填',
- flinkImagePlaceholder:
'请输入Flink基础docker镜像的标签,如:flink:1.13.0-scala_2.11-java8',
- flinkImageIsRequiredMessage: 'Flink基础docker镜像是必填的',
+ sparkImagePlaceholder: '请输入Spark基础docker镜像的标签,如:spark:1.13.0-java8',
+ sparkImageIsRequiredMessage: 'Spark基础docker镜像是必填的',
k8sRestExposedTypePlaceholder: 'Kubernetes Rest-Service Exposed Type',
hadoopXmlConfigFileTips: '从系统环境参数自动复制配置文件',
dynamicPropertiesPlaceholder: '$key=$value,如果有多个参数,可以换行输入(-D <arg>)',
diff --git
a/streampark-console/streampark-console-webapp/src/locales/lang/zh-CN/spark/home.ts
b/streampark-console/streampark-console-webapp/src/locales/lang/zh-CN/spark/home.ts
index c046f9722..a81d74bcc 100644
---
a/streampark-console/streampark-console-webapp/src/locales/lang/zh-CN/spark/home.ts
+++
b/streampark-console/streampark-console-webapp/src/locales/lang/zh-CN/spark/home.ts
@@ -20,7 +20,8 @@ export default {
searchByName: '按Spark名称搜索',
conf: 'Spark Conf',
sync: '同步 Conf',
- edit: '编辑 Spark 环境',
+ edit: '编辑 Spark Home',
+ delete: '确定删除此 Spark home?',
tips: {
remove: '当前的 spark home 已被成功删除。',
setDefault: '成功设置默认spark home',
diff --git
a/streampark-console/streampark-console-webapp/src/views/flink/app/components/AppDetail/DetailTab.vue
b/streampark-console/streampark-console-webapp/src/views/flink/app/components/AppDetail/DetailTab.vue
index 59a256238..7df156c9d 100644
---
a/streampark-console/streampark-console-webapp/src/views/flink/app/components/AppDetail/DetailTab.vue
+++
b/streampark-console/streampark-console-webapp/src/views/flink/app/components/AppDetail/DetailTab.vue
@@ -46,7 +46,6 @@
fetchOptionLog,
fetchRemoveBackup,
fetchDeleteOperationLog,
- fetchYarn,
} from '/@/api/flink/app';
import { decodeByBase64 } from '/@/utils/cipher';
import { useModal } from '/@/components/Modal';
diff --git
a/streampark-console/streampark-console-webapp/src/views/flink/app/components/AppView/StopApplicationModal.vue
b/streampark-console/streampark-console-webapp/src/views/flink/app/components/AppView/StopApplicationModal.vue
index fc1aa9b0e..158431864 100644
---
a/streampark-console/streampark-console-webapp/src/views/flink/app/components/AppView/StopApplicationModal.vue
+++
b/streampark-console/streampark-console-webapp/src/views/flink/app/components/AppView/StopApplicationModal.vue
@@ -88,7 +88,7 @@
async function handleSubmit() {
try {
const { triggerSavepoint, customSavepoint, drain } = (await validate())
as Recordable;
- const stopReq = {
+ const stopReq: CancelParam = {
id: app.id,
restoreOrTriggerSavepoint: triggerSavepoint,
savepointPath: customSavepoint,
diff --git
a/streampark-console/streampark-console-webapp/src/views/flink/app/styles/Add.less
b/streampark-console/streampark-console-webapp/src/views/flink/app/styles/Add.less
index 5159a19b8..7cc9a6333 100644
---
a/streampark-console/streampark-console-webapp/src/views/flink/app/styles/Add.less
+++
b/streampark-console/streampark-console-webapp/src/views/flink/app/styles/Add.less
@@ -103,7 +103,8 @@
}
.pod-template-tool,
-.flinksql-tool {
+.flinksql-tool,
+.sparkSql-tool {
z-index: 99;
float: right;
margin-right: 5px;
@@ -111,7 +112,8 @@
margin-top: 5px;
}
-.flinksql-tool-item {
+.flinksql-tool-item,
+.sparkSql-tool-item {
font-size: 12px;
display: flex;
align-items: center;
@@ -200,6 +202,7 @@
padding: 0 6px;
width: unset;
float: left;
+
.ant-alert-close-icon {
position: relative;
left: 5px;
@@ -212,7 +215,7 @@
cursor: pointer;
}
- .form-required > .ant-form-item-label > label::before {
+ .form-required>.ant-form-item-label>label::before {
display: inline-block;
margin-right: 4px;
color: #f5222d;
@@ -268,6 +271,7 @@
.icon-close {
color: #ffffff73;
}
+
.dependency-box {
background-color: #111b26;
border: 1px solid #153450;
diff --git
a/streampark-console/streampark-console-webapp/src/views/spark/app/components/DetailTab.vue
b/streampark-console/streampark-console-webapp/src/views/spark/app/components/DetailTab.vue
index efba63368..40b1952c6 100644
---
a/streampark-console/streampark-console-webapp/src/views/spark/app/components/DetailTab.vue
+++
b/streampark-console/streampark-console-webapp/src/views/spark/app/components/DetailTab.vue
@@ -38,7 +38,6 @@
fetchSparkDeleteOptLog,
fetchSparkOptionLog,
fetchSparkRemoveBackup,
- fetchSparkYarn,
} from '/@/api/spark/app';
import { decodeByBase64 } from '/@/utils/cipher';
import { useModal } from '/@/components/Modal';
@@ -52,6 +51,7 @@
import SparkSqlCompareModal from './SparkSqlCompareModal.vue';
import { fetchSparkSql, fetchSparkSqlList, fetchSparkSqlRemove } from
'/@/api/spark/sql';
import { SparkApplication } from '/@/api/spark/app.type';
+ import { baseUrl } from '/@/api';
const DescriptionItem = Descriptions.Item;
const TabPane = Tabs.TabPane;
@@ -251,9 +251,12 @@
});
}
- async function handleYarnUrl(yarnAppId: string) {
- const res = await fetchSparkYarn();
- window.open(res + '/proxy/' + yarnAppId + '/');
+ async function handleYarnUrl(id: string) {
+ window.open(baseUrl() + '/proxy/yarn/' + id + '/');
+ }
+
+ async function handleViewHistory(id: string) {
+ window.open(baseUrl() + '/proxy/history/' + id + '/');
}
function getBackupAction(record: Recordable): ActionItem[] {
@@ -344,9 +347,9 @@
{{ record.yarnAppId }}
</a>
</template>
- <template v-if="column.dataIndex === 'jobManagerUrl'">
- <a type="link" :href="record.jobManagerUrl" target="_blank">
- {{ record.jobManagerUrl }}
+ <template v-if="column.dataIndex === 'trackUrl'">
+ <a type="link" @click="handleViewHistory(record.id)"
target="_blank">
+ {{ record.trackUrl }}
</a>
</template>
<template v-if="column.dataIndex === 'optionTime'">
diff --git
a/streampark-console/streampark-console-webapp/src/views/spark/app/components/ProgramArgs.vue
b/streampark-console/streampark-console-webapp/src/views/spark/app/components/ProgramArgs.vue
index 0da0d6366..69deabbd7 100644
---
a/streampark-console/streampark-console-webapp/src/views/spark/app/components/ProgramArgs.vue
+++
b/streampark-console/streampark-console-webapp/src/views/spark/app/components/ProgramArgs.vue
@@ -29,19 +29,19 @@
</Tooltip>
</div>
<div ref="programArgRef" :class="fullEditorClass" class="w-full
program-box mt-5px"> </div>
- <ButtonGroup class="flinksql-tool" v-if="!fullScreenStatus">
+ <ButtonGroup class="sparkSql-tool" v-if="!fullScreenStatus">
<a-button
- class="flinksql-tool-item"
+ class="sparkSql-tool-item"
v-if="canReview"
type="primary"
@click="emit('preview', value)"
size="small"
>
<Icon icon="ant-design:eye-outlined" />
- {{ t('flink.app.flinkSql.preview') }}
+ {{ t('spark.app.sparkSql.preview') }}
</a-button>
<a-button
- class="flinksql-tool-item"
+ class="sparkSql-tool-item"
size="small"
:type="canReview ? 'default' : 'primary'"
@click="toggle"
@@ -50,18 +50,18 @@
{{ t('layout.header.tooltipEntryFull') }}
</a-button>
</ButtonGroup>
- <ButtonGroup v-else class="flinksql-tool">
+ <ButtonGroup v-else class="sparkSql-tool">
<a-button
type="primary"
- class="flinksql-tool-item"
+ class="sparkSql-tool-item"
v-if="canReview"
@click="emit('preview', value)"
>
<Icon icon="ant-design:eye-outlined" />
- {{ t('flink.app.flinkSql.preview') }}
+ {{ t('spark.app.sparkSql.preview') }}
</a-button>
<a-button
- class="flinksql-tool-item"
+ class="sparkSql-tool-item"
size="small"
:type="canReview ? 'default' : 'primary'"
@click="toggle"
diff --git
a/streampark-console/streampark-console-webapp/src/views/spark/app/components/SparkSql.vue
b/streampark-console/streampark-console-webapp/src/views/spark/app/components/SparkSql.vue
index 8d6f2c6d0..c2e5b6f96 100644
---
a/streampark-console/streampark-console-webapp/src/views/spark/app/components/SparkSql.vue
+++
b/streampark-console/streampark-console-webapp/src/views/spark/app/components/SparkSql.vue
@@ -133,15 +133,7 @@
const formatSql = format(props.value);
setContent(formatSql);
}
- /* full screen */
- // function handleBigScreen() {
- // toggle();
- // unref(flinkSql).style.width = '0';
- // setTimeout(() => {
- // unref(flinkSql).style.width = '100%';
- // unref(flinkSql).style.height = isFullscreen.value ? 'calc(100vh -
50px)' : '550px';
- // }, 500);
- // }
+
const { onChange, setContent, getInstance, getMonacoInstance,
setMonacoSuggest } = useMonaco(
sparkSql,
{
@@ -163,7 +155,7 @@
const canPreview = computed(() => {
return /\${.+}/.test(props.value);
});
- const flinkEditorClass = computed(() => {
+ const sparkEditorClass = computed(() => {
return {
...fullEditorClass.value,
['syntax-' + (verifyRes.errorMsg ? 'false' : 'true')]: true,
@@ -195,7 +187,7 @@
<div
ref="sparkSql"
class="overflow-hidden w-full mt-5px sql-bordered"
- :class="flinkEditorClass"
+ :class="sparkEditorClass"
></div>
<ButtonGroup class="sql-tool" v-if="!fullScreenStatus">
<a-button size="small" class="sql-tool-item" type="primary"
@click="handleVerifySql">
diff --git
a/streampark-console/streampark-console-webapp/src/views/spark/app/components/SparkSqlDifferent.vue
b/streampark-console/streampark-console-webapp/src/views/spark/app/components/SparkSqlDifferent.vue
index 90f92d1c3..acae65110 100644
---
a/streampark-console/streampark-console-webapp/src/views/spark/app/components/SparkSqlDifferent.vue
+++
b/streampark-console/streampark-console-webapp/src/views/spark/app/components/SparkSqlDifferent.vue
@@ -14,7 +14,7 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-<script setup lang="ts" name="FlinkSqlDifferent">
+<script setup lang="ts">
import { nextTick, reactive, ref } from 'vue';
import { getMonacoOptions } from '/@/views/flink/app/data/index';
import { BasicDrawer, useDrawerInner } from '/@/components/Drawer';
diff --git
a/streampark-console/streampark-console-webapp/src/views/spark/app/components/SparkSqlReview.vue
b/streampark-console/streampark-console-webapp/src/views/spark/app/components/SparkSqlReview.vue
index f7b3edb49..b8c4f92a6 100644
---
a/streampark-console/streampark-console-webapp/src/views/spark/app/components/SparkSqlReview.vue
+++
b/streampark-console/streampark-console-webapp/src/views/spark/app/components/SparkSqlReview.vue
@@ -26,7 +26,7 @@
<EyeOutlined style="color: green" />
Spark SQL preview
</template>
- <div ref="sparkReviewRef" class="h-[calc(100vh-150px)]
flink-preview"></div>
+ <div ref="sparkReviewRef" class="h-[calc(100vh-150px)]
spark-preview"></div>
</BasicDrawer>
</template>
@@ -49,7 +49,7 @@
});
</script>
<style lang="less">
- .flink-preview {
+ .spark-preview {
border: 1px solid @border-color-base;
}
</style>
diff --git
a/streampark-console/streampark-console-webapp/src/views/spark/app/components/State.tsx
b/streampark-console/streampark-console-webapp/src/views/spark/app/components/State.tsx
index ad6fdf2af..3895abd30 100644
---
a/streampark-console/streampark-console-webapp/src/views/spark/app/components/State.tsx
+++
b/streampark-console/streampark-console-webapp/src/views/spark/app/components/State.tsx
@@ -25,7 +25,7 @@ const { t } = useI18n();
/* state map*/
export const stateMap = {
- [AppStateEnum.ADDED]: { color: '#2f54eb', title:
t('spark.app.runState.added') },
+ [AppStateEnum.ADDED]: { color: '#477de9', title:
t('spark.app.runState.added') },
[AppStateEnum.NEW_SAVING]: {
color: '#738df8',
title: t('spark.app.runState.saving'),
@@ -53,11 +53,11 @@ export const stateMap = {
class: 'status-processing-success',
},
[AppStateEnum.RUNNING]: {
- color: '#fa541c',
+ color: '#1890ff',
title: t('spark.app.runState.running'),
class: 'status-processing-failing',
},
- [AppStateEnum.FINISHED]: { color: '#1890ff', title:
t('spark.app.runState.finished') },
+ [AppStateEnum.FINISHED]: { color: '#52c41a', title:
t('spark.app.runState.finished') },
[AppStateEnum.FAILED]: { color: '#f5222d', title:
t('spark.app.runState.failed') },
[AppStateEnum.LOST]: { color: '#333333', title: t('spark.app.runState.lost')
},
[AppStateEnum.MAPPING]: {
@@ -73,7 +73,7 @@ export const stateMap = {
},
[AppStateEnum.STOPPING]: {
- color: '#738df8',
+ color: '#f5222d',
title: t('spark.app.runState.stopping'),
class: 'status-processing-initializing',
},
diff --git
a/streampark-console/streampark-console-webapp/src/views/spark/app/components/VariableReview.vue
b/streampark-console/streampark-console-webapp/src/views/spark/app/components/VariableReview.vue
index 3022a4361..dbbfb5dbc 100644
---
a/streampark-console/streampark-console-webapp/src/views/spark/app/components/VariableReview.vue
+++
b/streampark-console/streampark-console-webapp/src/views/spark/app/components/VariableReview.vue
@@ -24,9 +24,9 @@
>
<template #title>
<EyeOutlined style="color: green" />
- Flink SQL preview
+ Spark SQL preview
</template>
- <div ref="flinkReviewRef" class="h-[calc(100vh-150px)]
flink-preview"></div>
+ <div ref="sparkReviewRef" class="h-[calc(100vh-150px)]
spark-preview"></div>
</BasicDrawer>
</template>
@@ -36,8 +36,8 @@
import { getMonacoOptions } from '../data';
import { BasicDrawer, useDrawerInner } from '/@/components/Drawer';
import { useMonaco } from '/@/hooks/web/useMonaco';
- const flinkReviewRef = ref();
- const { setContent } = useMonaco(flinkReviewRef, {
+ const sparkReviewRef = ref();
+ const { setContent } = useMonaco(sparkReviewRef, {
language: 'sql',
code: '',
options: getMonacoOptions(true) as any,
@@ -58,8 +58,8 @@
}
});
</script>
-<style lang="less">
- .flink-preview {
+<style lang="less" scoped>
+ .spark-preview {
border: 1px solid @border-color-base;
}
</style>
diff --git
a/streampark-console/streampark-console-webapp/src/views/spark/app/create.vue
b/streampark-console/streampark-console-webapp/src/views/spark/app/create.vue
index cf1b7e5d2..4d783d94b 100644
---
a/streampark-console/streampark-console-webapp/src/views/spark/app/create.vue
+++
b/streampark-console/streampark-console-webapp/src/views/spark/app/create.vue
@@ -100,11 +100,11 @@
}
/* Submit to create */
async function handleAppSubmit(formValue: Recordable) {
- let config = formValue.configOverride;
- if (config != null && config !== undefined && config.trim() != '') {
- config = encryptByBase64(config);
+ let { configOverride } = formValue;
+ if (configOverride != null && configOverride !== undefined &&
configOverride.trim() != '') {
+ formValue.config = encryptByBase64(configOverride);
} else {
- config = null;
+ formValue.config = null;
}
if (formValue.jobType == JobTypeEnum.SQL) {
if (formValue.sparkSql == null || formValue.sparkSql.trim() === '') {
@@ -116,15 +116,9 @@
throw new Error(access);
}
}
- handleSQLMode({
- ...formValue,
- config,
- });
+ handleSQLMode(formValue);
} else {
- handleCustomJobMode({
- ...formValue,
- config,
- });
+ handleCustomJobMode(formValue);
}
}
/* send create request */
diff --git
a/streampark-console/streampark-console-webapp/src/views/spark/app/detail.vue
b/streampark-console/streampark-console-webapp/src/views/spark/app/detail.vue
index 455476f70..96f4406e5 100644
---
a/streampark-console/streampark-console-webapp/src/views/spark/app/detail.vue
+++
b/streampark-console/streampark-console-webapp/src/views/spark/app/detail.vue
@@ -211,7 +211,7 @@
class="float-right -mt-8px mr-20px"
>
<Icon icon="ant-design:cloud-outlined" />
- {{ t('spark.app.detail.flinkWebUi') }}
+ {{ t('spark.app.detail.webUI') }}
</a-button>
</div>
<Description @register="registerDescription" />
diff --git
a/streampark-console/streampark-console-webapp/src/views/spark/app/edit.vue
b/streampark-console/streampark-console-webapp/src/views/spark/app/edit.vue
index 7dfffe044..76c90b6ed 100644
--- a/streampark-console/streampark-console-webapp/src/views/spark/app/edit.vue
+++ b/streampark-console/streampark-console-webapp/src/views/spark/app/edit.vue
@@ -100,6 +100,7 @@
appType: AppTypeEnum.APACHE_SPARK,
versionId: values.versionId,
sparkSql: values.sparkSql,
+ sqlId: sparkApp.value.sqlId,
jar: null,
mainClass: null,
appName: values.appName,
@@ -115,11 +116,11 @@
}
/* Submit to create */
async function handleAppSubmit(formValue: Recordable) {
- let config = formValue.configOverride;
- if (config != null && config !== undefined && config.trim() != '') {
- config = encryptByBase64(config);
+ const { configOverride } = formValue;
+ if (configOverride != null && configOverride !== undefined &&
configOverride.trim() != '') {
+ formValue.config = encryptByBase64(configOverride);
} else {
- config = null;
+ formValue.config = null;
}
if (formValue.jobType == JobTypeEnum.SQL) {
@@ -132,15 +133,9 @@
throw new Error(access);
}
}
- handleSQLMode({
- ...formValue,
- config,
- });
+ handleSQLMode(formValue);
} else {
- handleCustomJobMode({
- ...formValue,
- config,
- });
+ handleCustomJobMode(formValue);
}
}
/* send create request */
diff --git
a/streampark-console/streampark-console-webapp/src/views/spark/app/hooks/useAppFormSchema.tsx
b/streampark-console/streampark-console-webapp/src/views/spark/app/hooks/useAppFormSchema.tsx
index 55a2735f7..acade5001 100644
---
a/streampark-console/streampark-console-webapp/src/views/spark/app/hooks/useAppFormSchema.tsx
+++
b/streampark-console/streampark-console-webapp/src/views/spark/app/hooks/useAppFormSchema.tsx
@@ -153,7 +153,7 @@ export function useSparkSchema(sparkEnvs: Ref<SparkEnv[]>) {
fieldNames: { label: 'sparkName', value: 'id', options: 'options' },
},
rules: [
- { required: true, message:
t('spark.app.addAppTips.flinkVersionIsRequiredMessage') },
+ { required: true, message:
t('spark.app.addAppTips.sparkVersionIsRequiredMessage') },
],
},
{
@@ -221,7 +221,7 @@ export function useSparkSchema(sparkEnvs: Ref<SparkEnv[]>) {
<p class="conf-desc mt-10px">
<span class="note-info">
<Tag color="#2db7f5" class="tag-note">
- {t('flink.app.noteInfo.note')}
+ {t('spark.app.noteInfo.note')}
</Tag>
{t('setting.yarnQueue.selectionHint')}
</span>
diff --git
a/streampark-console/streampark-console-webapp/src/views/spark/app/hooks/useSparkAction.tsx
b/streampark-console/streampark-console-webapp/src/views/spark/app/hooks/useSparkAction.tsx
index 37d1e5091..f69fe39ba 100644
---
a/streampark-console/streampark-console-webapp/src/views/spark/app/hooks/useSparkAction.tsx
+++
b/streampark-console/streampark-console-webapp/src/views/spark/app/hooks/useSparkAction.tsx
@@ -55,8 +55,8 @@ export const useSparkAction = (optionApps: Recordable) => {
createWarningModal({
title: 'WARNING',
content: `
- <p class="pt-10px">${t('flink.app.release.releaseTitle')}</p>
- <p>${t('flink.app.release.releaseDesc')}</p>
+ <p class="pt-10px">${t('spark.app.release.releaseTitle')}</p>
+ <p>${t('spark.app.release.releaseDesc')}</p>
`,
okType: 'danger',
onOk: () => handleReleaseApp(app, true),
@@ -73,13 +73,13 @@ export const useSparkAction = (optionApps: Recordable) => {
if (!res.data) {
let message = res.message || '';
if (!message) {
- message = t('flink.app.release.releaseFail') +
message.replaceAll(/\[StreamPark]/g, '');
+ message = t('spark.app.release.releaseFail') +
message.replaceAll(/\[StreamPark]/g, '');
}
Swal.fire('Failed', message, 'error');
} else {
Swal.fire({
icon: 'success',
- title: t('flink.app.release.releasing'),
+ title: t('spark.app.release.releasing'),
showConfirmButton: false,
timer: 2000,
});
@@ -315,13 +315,13 @@ export const useSparkAction = (optionApps: Recordable) =>
{
} else {
validateStatus.value = 'error';
if (code === 1) {
- help = t('flink.app.addAppTips.appNameNotUniqueMessage');
+ help = t('spark.app.addAppTips.appNameNotUniqueMessage');
} else if (code === 2) {
- help = t('flink.app.addAppTips.appNameExistsInYarnMessage');
+ help = t('spark.app.addAppTips.appNameExistsInYarnMessage');
} else if (code === 3) {
- help = t('flink.app.addAppTips.appNameExistsInK8sMessage');
+ help = t('spark.app.addAppTips.appNameExistsInK8sMessage');
} else {
- help = t('flink.app.addAppTips.appNameNotValid');
+ help = t('spark.app.addAppTips.appNameNotValid');
}
return Promise.reject('copy application error');
}
diff --git
a/streampark-console/streampark-console-webapp/src/views/spark/app/hooks/useSparkRender.tsx
b/streampark-console/streampark-console-webapp/src/views/spark/app/hooks/useSparkRender.tsx
index b3b2acb29..30191fa70 100644
---
a/streampark-console/streampark-console-webapp/src/views/spark/app/hooks/useSparkRender.tsx
+++
b/streampark-console/streampark-console-webapp/src/views/spark/app/hooks/useSparkRender.tsx
@@ -95,7 +95,7 @@ export const renderYarnQueue = ({ model, field }:
RenderCallbackParams) => {
<p class="conf-desc mt-10px">
<span class="note-info">
<Tag color="#2db7f5" class="tag-note">
- {t('flink.app.noteInfo.note')}
+ {t('spark.app.noteInfo.note')}
</Tag>
{t('setting.yarnQueue.selectionHint')}
</span>
@@ -104,35 +104,6 @@ export const renderYarnQueue = ({ model, field }:
RenderCallbackParams) => {
);
};
-/* render memory option */
-export const renderDynamicProperties = ({ model, field }:
RenderCallbackParams) => {
- return (
- <div>
- <Input.TextArea
- rows={8}
- name="dynamicProperties"
- placeholder="$key=$value,If there are multiple parameters,you can new
line enter them (-D <arg>)"
- value={model[field]}
- onInput={(e: ChangeEvent) => (model[field] = e?.target?.value)}
- />
- <p class="conf-desc mt-10px">
- <span class="note-info">
- <Tag color="#2db7f5" class="tag-note">
- {t('flink.app.noteInfo.note')}
- </Tag>
- <a
-
href="https://ci.apache.org/projects/flink/flink-docs-stable/ops/config.html"
- target="_blank"
- class="pl-5px"
- >
- Flink {t('flink.app.noteInfo.officialDoc')}
- </a>
- </span>
- </p>
- </div>
- );
-};
-
export const getAlertSvgIcon = (name: string, text: string) => {
return (
<Alert type="info">
@@ -275,7 +246,7 @@ export const renderStreamParkResource = ({ model, resources
}) => {
optionFilterProp="label"
onChange={(value) => (model.jar = value)}
value={model.jar}
- placeholder={t('flink.app.resourcePlaceHolder')}
+ placeholder={t('spark.app.resourcePlaceHolder')}
>
{renderOptions()}
</Select>
@@ -316,7 +287,7 @@ export const renderStreamParkJarApp = ({ model, resources
}) => {
optionFilterProp="label"
onChange={handleAppChange}
value={model.uploadJobJar}
- placeholder={t('flink.app.selectAppPlaceHolder')}
+ placeholder={t('spark.app.selectAppPlaceHolder')}
>
{renderOptions()}
</Select>
diff --git
a/streampark-console/streampark-console-webapp/src/views/spark/app/hooks/useSparkTableAction.ts
b/streampark-console/streampark-console-webapp/src/views/spark/app/hooks/useSparkTableAction.ts
index f20e72907..c46542c39 100644
---
a/streampark-console/streampark-console-webapp/src/views/spark/app/hooks/useSparkTableAction.ts
+++
b/streampark-console/streampark-console-webapp/src/views/spark/app/hooks/useSparkTableAction.ts
@@ -23,11 +23,7 @@ import { AppStateEnum, JobTypeEnum, OptionStateEnum } from
'/@/enums/sparkEnum';
import { usePermission } from '/@/hooks/web/usePermission';
import { useI18n } from '/@/hooks/web/useI18n';
import { isFunction, isNullAndUnDef, isObject } from '/@/utils/is';
-import {
- fetchSparkAppForcedStop,
- fetchSparkAppRecord,
- fetchSparkAppRemove,
-} from '/@/api/spark/app';
+import { fetchSparkAppCancel, fetchSparkAppRecord, fetchSparkAppRemove } from
'/@/api/spark/app';
import type { SparkApplication } from '/@/api/spark/app.type';
import { useSparkAction } from './useSparkAction';
import { useDrawer } from '/@/components/Drawer';
@@ -98,7 +94,7 @@ export const useSparkTableAction = (handlePageDataReload: Fn,
optionApps: Record
{
tooltip: { title: t('spark.app.operation.cancel') },
ifShow:
- record.state == AppStateEnum.RUNNING && record['optionState'] ==
OptionStateEnum.NONE,
+ record.state == AppStateEnum.ACCEPTED && record['optionState'] ==
OptionStateEnum.NONE,
auth: 'app:cancel',
icon: 'ant-design:pause-circle-outlined',
popConfirm: {
@@ -218,7 +214,7 @@ export const useSparkTableAction = (handlePageDataReload:
Fn, optionApps: Record
// click stop application
async function handleCancel(app: SparkApplication) {
if (!optionApps.stopping.get(app.id) || app['optionState'] ==
OptionStateEnum.NONE) {
- await fetchSparkAppForcedStop({
+ await fetchSparkAppCancel({
id: app.id,
});
Swal.fire({
diff --git
a/streampark-console/streampark-console-webapp/src/views/spark/app/index.vue
b/streampark-console/streampark-console-webapp/src/views/spark/app/index.vue
index ef6c70b34..1837326d9 100644
--- a/streampark-console/streampark-console-webapp/src/views/spark/app/index.vue
+++ b/streampark-console/streampark-console-webapp/src/views/spark/app/index.vue
@@ -354,11 +354,11 @@
<Popover :title="t('common.detailText')">
<template #content>
<div class="flex">
- <span class="pr-6px font-bold">{{ t('flink.app.appName')
}}:</span>
+ <span class="pr-6px font-bold">{{ t('spark.app.appName')
}}:</span>
<div class="max-w-300px break-words">{{ record.appName
}}</div>
</div>
<div class="pt-2px">
- <span class="pr-6px font-bold">{{ t('flink.app.jobType')
}}:</span>
+ <span class="pr-6px font-bold">{{ t('spark.app.jobType')
}}:</span>
<Tag color="blue">
<span v-if="record['jobType'] == JobTypeEnum.JAR"> Spark
JAR </span>
<span v-if="record['jobType'] == JobTypeEnum.SQL"> Spark
SQL </span>
@@ -379,13 +379,13 @@
v-if="record.release === ReleaseStateEnum.NEED_CHECK"
class="build-badge"
count="NEW"
- :title="t('flink.app.view.recheck')"
+ :title="t('spark.app.view.recheck')"
/>
<Badge
v-else-if="record.release >= ReleaseStateEnum.RELEASING"
class="build-badge"
count="NEW"
- :title="t('flink.app.view.changed')"
+ :title="t('spark.app.view.changed')"
/>
</template>
</template>
diff --git
a/streampark-console/streampark-console-webapp/src/views/spark/home/components/Modal.vue
b/streampark-console/streampark-console-webapp/src/views/spark/home/components/Modal.vue
index b6ce18e84..ba1e4f260 100644
---
a/streampark-console/streampark-console-webapp/src/views/spark/home/components/Modal.vue
+++
b/streampark-console/streampark-console-webapp/src/views/spark/home/components/Modal.vue
@@ -165,7 +165,7 @@
>
<template #title>
<SvgIcon name="spark" />
- {{ versionId ? t('common.edit') : t('common.') }}
+ {{ versionId ? t('common.edit') : t('common.add') }}
</template>
<BasicForm @register="registerForm" />
</BasicModal>
diff --git
a/streampark-console/streampark-console-webapp/src/views/spark/home/index.vue
b/streampark-console/streampark-console-webapp/src/views/spark/home/index.vue
index 0f228f7b0..b2c1fda83 100644
---
a/streampark-console/streampark-console-webapp/src/views/spark/home/index.vue
+++
b/streampark-console/streampark-console-webapp/src/views/spark/home/index.vue
@@ -132,9 +132,9 @@
</Col>
</template>
<template #bodyCell="{ column, record }">
- <template v-if="column.dataIndex === 'flinkName'">
- <svg-icon class="avatar" name="flink" :size="20" />
- {{ record.flinkName }}
+ <template v-if="column.dataIndex === 'sparkName'">
+ <svg-icon class="avatar" name="spark" :size="20" />
+ {{ record.sparkName }}
</template>
<template v-if="column.dataIndex === 'default'">
<Switch
@@ -165,7 +165,7 @@
tooltip: t('common.delText'),
disabled: record.isDefault && getDataSource()?.length > 1,
popConfirm: {
- title: t('common.delText'),
+ title: t('spark.home.delete'),
placement: 'left',
confirm: handleDelete.bind(null, record),
},