华为云用户手册

  • 适用计费项 AstroZero提供了免费版、标准版、专业版和专享版四种套餐,请根据需要选择按月购买或按年购买。 免费版:免费使用,最多可添加10个用户(包括业务用户),可以使用的资源有限,免费版提供开发环境和开发零代码应用的运行环境,不提供低代码应用的运行环境(开发环境介绍)。 标准版:适用于零代码应用开发场景,开发者不需要有代码开发经验,企业自用首选。 标准版270元/月,最多可添加30个用户(包括业务用户),超过的用户数将额外收取费用(9元/用户/月)。 专业版:专业版在标准版基础上提供了低代码应用运行环境(多租户共享运行环境),且提供了更多功能和资源,适用于专业开发者。 专业版1170元/月,最多可添加30个用户(包括业务用户),超过的用户数将额外收取费用(39元/用户/月)。 专享版:使用专享版前,请确认已提交工单申请开通专享版,否则,您将无法购买专享版。专享版提供了物理隔离的运行环境,运行环境实例发放到租户虚拟私有云中。 专享版提供了如下三种规格,供您选择。 500人:48000元/月,最多可添加500用户(包括业务用户)。 2000人:82000元/月,最多可添加2000用户(包括业务用户)。 5000人:128000元/月,最多可添加5000用户(包括业务用户)。
  • 变更配置后对计费的影响 当前包年/包月的AstroZero套餐的规格不能满足您的业务需要时,可以在控制台发起升级规格操作。AstroZero支持免费版升级标准版或专业版,标准版升级至专业版,变更时系统将按照如下规则为您计算变更费用: 套餐版本升级:新套餐版本价格高于老套餐版本价格,此时您需要支付新老版本的差价。 升级版本费用 = 升级后版本价格 * 剩余周期 - 未升级版本价格 * 剩余周期 剩余周期计算示例: 2023/11/1客户购买了3年的AstroZero,有效期截止到2026/11/1,客户在2024/5/1发生变更,则剩余周期=2024年剩余周期+2025年剩余周期+2026年剩余周期=244/365+1+305/365=2.50(年)。
  • 到期后影响 图2描述了包年/包月AstroZero资源各个阶段的状态。购买后,在计费周期内资源正常运行,此阶段为有效期。资源到期而未续费时,将陆续进入宽限期和保留期,详细说明请参考宽限期保留期。 图2 包年/包月AstroZero资源生命周期 到期预警 包年/包月资源(未设置自动续费、到期转按需、到期不续费)到期前15、7、3、1天,汇总发通知告知客户去续费;包年/包月资源(设置到期不续费)到期前3天,汇总发通知告知客户去续费。 到期后影响 当包年/包月的AstroZero到期未续费时,首先会进入宽限期,可以正常使用该资源。 如果在宽限期内仍未续费或充值,那么就会进入保留期,保留期内该资源会被冻结不能正常使用,但对客户存储在该资源中的数据仍予以保留。 保留期满仍未续费或充值,那么该资源会自动被删除,且不能再找回,也不能再续费。 华为云根据客户等级,定义了不同客户的宽限期和保留期时长。 关于续费的详细介绍,请参见续费概述。
  • 请求示例 更新Flink Jar作业信息,更新后作业名称为test1,作业执行的队列为testQueue,关闭作业日志。 { "name": "test1", "desc": "job for test", "job_type": "flink_jar_job", "queue_name": "testQueue", "manager_cu_number": 1, "cu_number": 2, "parallel_number": 1, "log_enabled": false, "main_class": "org.apache.flink.examples.streaming.JavaQueueStream", "restart_when_exception": false, "entrypoint": "FemaleInfoCollec.jar", "dependency_jars": [ "myGroup/test.jar", "myGroup/test1.jar" ], "dependency_files": [ "myGroup/test.csv", "myGroup/test1.csv" ] }
  • 请求消息 表2 参数说明 参数名称 是否必选 参数类型 说明 name 否 String 作业名称。长度限制:0-57个字符。 desc 否 String 作业描述。长度限制:0-512个字符。 queue_name 否 String 队列名称。长度限制:1-128个字符。 cu_number 否 Integer 用户为作业选择的CU数量。默认值为“2”。 manager_cu_number 否 Integer 用户为作业选择的管理节点CU数量,对应为flink jobmanager数量。默认值为“1”。 parallel_number 否 Integer 用户为作业选择的并发量。默认值为“1”。 log_enabled 否 Boolean 是否开启作业日志。 开启:true 关闭:false 默认:false obs_bucket 否 String 当“log_enabled”为“true”时,用户授权保存日志的OBS桶名。 smn_topic 否 String 当作业异常时,向该 SMN 主题推送告警信息。 main_class 否 String 作业入口类。 entrypoint_args 否 String 作业入口类参数,多个参数之间空格分隔。 restart_when_exception 否 Boolean 是否开启异常重启功能,默认值为“false”。 entrypoint 否 String 用户已上传到 DLI 资源管理系统的程序包名,用户自定义作业主类所在的jar包。 dependency_jars 否 Array of Strings 用户已上传到DLI资源管理系统的程序包名,用户自定义作业的其他依赖包。 示例“myGroup/test.jar,myGroup/test1.jar”。 dependency_files 否 Array of Strings 用户已上传到DLI资源管理系统的资源包名,用户自定义作业的依赖文件。 示例:"myGroup/test.cvs,myGroup/test1.csv" tm_cus 否 Integer 每个taskmanager的CU数,默认值为“1”。 tm_slot_num 否 Integer 每个taskmanager的slot数,默认值为“(parallel_number*tm_cus)/(cu_number-manager_cu_number)”。 feature 否 String 作业特性。表示用户作业使用的Flink镜像类型。 basic:表示使用DLI提供的基础Flink镜像。 custom:表示使用用户自定义的Flink镜像。 flink_version 否 String Flink版本。当用户设置“feature”为“basic”时,该参数生效。用户可通过与“feature”参数配合使用,指定作业运行使用的DLI基础Flink镜像的版本。 image 否 String 自定义镜像 。格式为:组织名/镜像名:镜像版本。 当用户设置“feature”为“custom”时,该参数生效。用户可通过与“feature”参数配合使用,指定作业运行使用自定义的Flink镜像。关于如何使用自定义镜像,请参考《 数据湖探索 用户指南》。 resume_checkpoint 否 Boolean 异常重启是否从checkpoint恢复。 resume_max_num 否 Integer 异常重试最大次数,单位:次/小时。取值范围:-1或大于0。默认值为“-1”,表示无限次数。 checkpoint_path 否 String 用户Jar中checkpoint的储存地址,不同作业路径需要保持不同。 runtime_config 否 String Flink作业运行时自定义优化参数。 job_type 否 String 作业类型。
  • 响应消息 表4 响应参数说明 参数名称 是否必选 参数类型 说明 is_success 否 String 执行请求是否成功。“true”表示请求执行成功。 message 否 String 消息内容。 job 否 Object 作业状态信息。具体请参考表5。 表5 job参数说明 参数名称 是否必选 参数类型 说明 job_id 是 Long 作业ID。 status_name 否 String 当前状态名称。 status_desc 否 String 当前状态描述。包含异常状态原因及建议。
  • 请求示例 新建名为test的Flink Jar作业,并设置作业执行在testQueue上,设置作业运行所使用的CU数、开启作业日志。 { "name": "test", "desc": "job for test", "queue_name": "testQueue", "manager_cu_number": 1, "cu_number": 2, "parallel_number": 1, "tm_cus": 1, "tm_slot_num": 1, "log_enabled": true, "obs_bucket": "bucketName", "smn_topic": "topic", "main_class": "org.apache.flink.examples.streaming.JavaQueueStream", "restart_when_exception": false, "entrypoint": "javaQueueStream.jar", "entrypoint_args":"-windowSize 2000 -rate 3", "dependency_jars": [ "myGroup/test.jar", "myGroup/test1.jar" ], "dependency_files": [ "myGroup/test.csv", "myGroup/test1.csv" ] }
  • 请求消息 表2 参数说明 参数名称 是否必选 参数类型 说明 name 是 String 作业名称。长度限制:1-57个字符。 desc 否 String 作业描述。长度限制:0-512个字符。 queue_name 否 String 队列名称。长度限制:0-128个字符。 cu_number 否 Integer 用户为作业选择的CU数量。 manager_cu_number 否 Integer 用户为作业选择的管理节点CU数量,对应为flink jobmanager数量。默认值为“1”。 parallel_number 否 Integer 用户为作业选择的并发量。 log_enabled 否 Boolean 是否开启作业日志。 开启:true 关闭:false 默认:false obs_bucket 否 String 当“log_enabled”为“true”时, 用户授权保存作业日志的OBS桶名。 smn_topic 否 String 当作业异常时,向该SMN主题推送告警信息。 main_class 否 String 作业入口类。 entrypoint_args 否 String 作业入口类参数,多个参数之间空格分隔。 restart_when_exception 否 Boolean 是否开启异常重启功能,默认值为“false”。 entrypoint 否 String 用户已上传到DLI资源管理系统的程序包名,用户自定义作业主类所在的jar包。 dependency_jars 否 Array of Strings 用户已上传到DLI资源管理系统的程序包名,用户自定义作业的其他依赖包。 示例“myGroup/test.jar,myGroup/test1.jar”。 dependency_files 否 Array of Strings 用户已上传到DLI资源管理系统的资源包名,用户自定义作业的依赖文件。 示例:"myGroup/test.cvs,myGroup/test1.csv"。 通过在应用程序中添加以下内容可访问对应的依赖文件。其中,“fileName”为需要访问的文件名,“ClassName”为需要访问该文件的类名。 ClassName.class.getClassLoader().getResource("userData/fileName") tm_cus 否 Integer 每个taskmanager的CU数,默认值为“1”。 tm_slot_num 否 Integer 每个taskmanager的slot数,默认值为“(parallel_number*tm_cus)/(cu_number-manager_cu_number)”。 feature 否 String 作业特性。表示用户作业使用的Flink镜像类型。 basic:表示使用DLI提供的基础Flink镜像。 custom:表示使用用户自定义的Flink镜像。 flink_version 否 String Flink版本。当用户设置“feature”为“basic”时,该参数生效。用户可通过与“feature”参数配合使用,指定作业运行使用的DLI基础Flink镜像的版本。 image 否 String 自定义镜像。格式为:组织名/镜像名:镜像版本。 当用户设置“feature”为“custom”时,该参数生效。用户可通过与“feature”参数配合使用,指定作业运行使用自定义的Flink镜像。关于如何使用自定义镜像,请参考《 数据湖 探索用户指南》。 resume_checkpoint 否 Boolean 异常重启是否从checkpoint恢复。 resume_max_num 否 Integer 异常重试最大次数,单位:次/小时。取值范围:-1或大于0。默认值为“-1”,表示无限次数。 checkpoint_path 否 String 用户Jar中checkpoint的储存地址,不同作业路径需要保持不同。 tags 否 Array of Objects Flink jar作业的标签。具体请参考表3。 runtime_config 否 String Flink作业运行时自定义优化参数。 表3 tags参数 参数名称 是否必选 参数类型 说明 key 是 String 标签的键。 说明: 标签的键的最大长度为128个字符,标签的键可以包含任意语种字母、数字、空格和_ . : =+-@ ,但首尾不能含有空格,不能以_sys_开头。 value 是 String 标签的值。 说明: 标签值的最大长度为255个字符,标签的值可以包含任意语种字母、数字、空格和_ . : =+-@ ,但首尾不能含有空格。
  • 请求示例 提交SQL作业,该作业执行的数据库为db1、队列为default,并为该作业设置标签workspace=space1;jobName=name1。 { "currentdb": "db1", "sql": "desc table1", "queue_name": "default", "conf": [ "dli.sql.shuffle.partitions = 200" ], "tags": [ { "key": "workspace", "value": "space1" }, { "key": "jobName", "value": "name1" } ] }
  • 响应消息 表5 响应参数 参数名称 是否必选 参数类型 说明 is_success 是 String 请求发送是否成功。“true”表示请求发送成功。 message 是 String 系统提示信息,执行成功时,信息可能为空。 job_id 是 String 此SQL语句将生成并提交一个新作业,返回此作业的ID,可用于获取作业状态和作业结果。 job_type 是 String 作业类型。 DDL DCL IMPORT EXPORT QUERY INSERT schema 否 Array of Map 当语句类型为DDL时,返回其结果的列名称及类型。 rows 否 Array of objects 当语句类型为DDL,且dli.sql.sqlasync.enabled=false时,直接返回其执行结果。但是最多只能返回1000行。 如果超过1000行,请通过异步方式获取结果。即,提交作业时配置 xxxx = true, 然后从DLI配置的作业桶中获取结果。结果在作业桶上的路径可以通过ShowSqlJobStatus接口返回值中的result_path来获取。结果的全量数据会自动导出到作业桶。 job_mode 否 String 作业执行模式: async:异步 sync:同步
  • 功能介绍 该API用于通过执行SQL语句的方式向队列提交作业。 作业包含以下类型:DDL、DCL、IMPORT、QUERY和INSERT。其中,IMPORT与导入数据(废弃)的功能一致,区别仅在于实现方式不同。 另外,用户可使用其他API来对作业进行查询和管理。具体操作有: 查询作业状态 查询作业详细信息 查询作业结果-方式二(废弃) 导出查询结果 查询所有作业 取消作业(推荐) 该API当响应消息中“job_type”为“DCL”时,为同步操作。
  • 请求消息 表2 请求参数 参数名称 是否必选 参数类型 说明 sql 是 String 待执行的SQL语句。 currentdb 否 String SQL语句执行所在的数据库。当创建新数据库时,不需要提供此参数。 queue_name 否 String 待提交作业的队列名称,名称只能包含数字、英文字母和下划线,但不能是纯数字,且不能以下划线开头。 conf 否 Array of Strings 用户以“key/value”的形式设置用于此作业的配置参数。目前支持的配置项请参考表3。 tags 否 Array of Objects 作业的标签。具体请参考表4。 engine_type 否 String 默认是spark。 表3 conf参数说明 参数名称 默认值 描述 spark.sql.files.maxRecordsPerFile 0 要写入单个文件的最大记录数。如果该值为零或为负,则没有限制。 spark.sql.autoBroadcastJoinThreshold 209715200 配置执行连接时显示所有工作节点的表的最大字节大小。通过将此值设置为“-1”,可以禁用显示。 说明: 当前仅支持运行命令ANALYZE TABLE COMPUTE statistics noscan的配置单元元存储表,和直接根据数据文件计算统计信息的基于文件的数据源表。 spark.sql.shuffle.partitions 200 为连接或聚合过滤数据时使用的默认分区数。 spark.sql.dynamicPartitionOverwrite.enabled false 当前配置设置为“false”时,DLI在覆盖写之前,会删除所有符合条件的分区。例如,分区表中有一个“2021-01”的分区,当使用INSERT OVERWRITE语句向表中写入“2021-02”这个分区的数据时,会把“2021-01”的分区数据也覆盖掉。 当前配置设置为“true”时,DLI不会提前删除分区,而是在运行时覆盖那些有数据写入的分区。 spark.sql.files.maxPartitionBytes 134217728 读取文件时要打包到单个分区中的最大字节数。 spark.sql.badRecordsPath - Bad Records的路径。 dli.sql.sqlasync.enabled true DDL和DCL语句是否异步执行,值为“true”时启用异步执行。 dli.sql.job.timeout - 设置作业运行超时时间,超时取消。单位:秒。 表4 tags参数 参数名称 是否必选 参数类型 说明 key 是 String 标签的键。 说明: 标签的键的最大长度为128个字符,标签的键可以包含任意语种字母、数字、空格和_ . : =+-@ ,但首尾不能含有空格,不能以_sys_开头。 value 是 String 说明: 标签值的最大长度为255个字符,标签的值可以包含任意语种字母、数字、空格和_ . : =+-@ ,但首尾不能含有空格。
  • 响应示例 { "is_success": true, "message": "", "job_id": "8ecb0777-9c70-4529-9935-29ea0946039c", "job_type": "DDL", "job_mode":"sync", "schema": [ { "col_name": "string" }, { "data_type": "string" }, { "comment": "string" } ], "rows": [ [ "c1", "int", null ], [ "c2", "string", null ] ] }
  • 请求示例 更新已有的SQL作业,更新后的作业名称为myjob,以共享模式运行在testQueue上。 { "name": "myjob", "desc": "这是我的第一个作业", "queue_name": "testQueue", "sql_body": "select * from source_table", "run_mode": "shared_cluster", "cu_number": 4, "parallel_number": 4, "checkpoint_enabled": false, "checkpoint_mode": "exactly_once", "checkpoint_interval": 10, "obs_bucket": "", "log_enabled": false, "smn_topic": "", "restart_when_exception": false, "idle_state_retention": 3600, "edge_group_ids": [ "62de1e1c-066e-48a8-a79d-f461a31b2ee1", "2eb00f85-99f2-4144-bcb7-d39ff47f9002" ], "dirty_data_strategy": "0", "udf_jar_url": "group/test.jar" }
  • 请求消息 表2 请求参数说明 参数名称 是否必选 参数类型 说明 name 否 String 作业名称。长度限制:0-57个字符。 desc 否 String 作业描述。长度限制:0-512个字符。 queue_name 否 String 队列名称。长度限制:0-128个字符。 sql_body 否 String Stream SQL语句,至少包含source, query, sink三个部分。长度限制:0-1024*1024个字符。 run_mode 否 String 作业运行模式: shared_cluster:共享。 exclusive_cluster:独享。 edge_node:边缘节点。 默认值为“shared_cluster”。 cu_number 否 Integer 用户为作业选择的CU数量。默认值为“2”。 parallel_number 否 Integer 用户设置的作业并行数目。默认值为“1”。 checkpoint_enabled 否 Boolean 是否开启作业自动快照功能。 开启:true 关闭:false 默认:false checkpoint_mode 否 Integer 快照模式,。两种可选: 1:表示exactly_once,数据只被消费一次。 2:at_least_once,数据至少被消费一次。 默认值为1。 checkpoint_interval 否 Integer 快照时间间隔。单位为秒,默认值为“10”。 obs_bucket 否 String 当“checkpoint_enabled”为“true”时,该参数是用户授权保存快照的OBS桶名称。 当“log_enabled” 为“true”时,该参数是用户授权保存作业日志的OBS桶名称。 log_enabled 否 Boolean 是否开启作业的日志上传到用户的OBS功能。默认为“false”。 smn_topic 否 String 当作业异常时,向该SMN主题推送告警信息。 restart_when_exception 否 Boolean 是否开启作业异常自动重启。默认为“false”。 idle_state_retention 否 Integer 空闲状态过期周期,单位为秒,默认值为“3600”。 edge_group_ids 否 Array of Strings 边缘计算组ID列表, 多个ID以逗号分隔。 dirty_data_strategy 否 String 作业脏数据策略。 “2:obsDir”:保存,obsDir表示脏数据存储路径。 “1”:抛出异常。 “0”:忽略。 默认值为“0”。 udf_jar_url 否 String 用户已上传到DLI资源管理系统的资源包名,用户sql作业的udf jar通过该参数传入。 manager_cu_number 否 Integer 用户为作业选择的管理单元(jobmanager)CU数量,默认值为“1”。 tm_cus 否 Integer 每个taskmanager的CU数,默认值为“1”。 tm_slot_num 否 Integer 每个taskmanager的slot数,默认值为“(parallel_number*tm_cus)/(cu_number-manager_cu_number)”。 operator_config 否 String 算子的并行度配置。 resume_checkpoint 否 Boolean 异常重启是否从checkpoint恢复。 resume_max_num 否 Integer 异常重试最大次数,单位:次/小时。取值范围:-1或大于0。默认值为“-1”,表示无限次数。 static_estimator_config 否 String 每个算子的流量/命中率配置,json格式的字符串。例如: {"operator_list":[{"id":"0a448493b4782967b150582570326227","rate_factor":0.55},{"id":"6d2677a0ecc3fd8df0b72ec675edf8f4","rate_factor":1},{"id":"ea632d67b7d595e5b851708ae9ad79d6","rate_factor":0.55},{"id":"bc764cd8ddf7a0cff126f51c16239658","output_rate":2000}]} runtime_config 否 String Flink作业运行时自定义优化参数。 flink_version 否 String Flink版本。当前只支持1.10和1.12。
  • 响应示例 作业类型为:flink_jar_job,参考响应样例如下: { "is_success": "true", "message": "作业详情查询成功", "job_detail": { "job_id": 104, "user_id": "011c99a26ae84a1bb963a75e7637d3fd", "queue_name": "flinktest", "project_id": "330e068af1334c9782f4226acc00a2e2", "name": "jptest", "desc": "", "sql_body": "", "run_mode": "exclusive_cluster", "job_type": "flink_jar_job", "job_config": { "checkpoint_enabled": false, "checkpoint_interval": 10, "checkpoint_mode": "exactly_once", "log_enabled": false, "obs_bucket": null, "root_id": -1, "edge_group_ids": null, "graph_editor_enabled": false, "graph_editor_data": "", "manager_cu_number": 1, "executor_number": null, "executor_cu_number": null, "cu_number": 2, "parallel_number": 1, "smn_topic": null, "restart_when_exception": false, "idle_state_retention": 3600, "config_url": null, "udf_jar_url": null, "dirty_data_strategy": null, "entrypoint": "FemaleInfoCollection.jar", "dependency_jars": [ "FemaleInfoCollection.jar", "ObsBatchTest.jar" ], "dependency_files": [ "FemaleInfoCollection.jar", "ReadFromResource" ] }, "main_class": null, "entrypoint_args": null, "execution_graph": null, "status": "job_init", "status_desc": "", "create_time": 1578466221525, "update_time": 1578467395713, "start_time": null } } 作业类型为:flink_opensource_sql_job,参考响应样例如下: { "is_success": "true", "message": "The job information query succeeds.", "job_detail": { "job_type": "flink_opensource_sql_job", "status_desc": "", "create_time": 1637632872828, "sql_body": "xxx", "savepoint_path": null, "main_class": null, "queue_name": "xie_container_general", "execution_graph": "xxx", "start_time": 1638433497621, "update_time": 1638449337993, "job_config": { "checkpoint_enabled": true, "checkpoint_interval": 600, "checkpoint_mode": "exactly_once", "log_enabled": true, "obs_bucket": "dli-test", "root_id": -1, "edge_group_ids": null, "graph_editor_enabled": false, "graph_editor_data": "", "manager_cu_number": 1, "executor_number": null, "executor_cu_number": null, "cu_number": 2, "parallel_number": 3, "smn_topic": "", "restart_when_exception": true, "resume_checkpoint": true, "resume_max_num": -1, "checkpoint_path": null, "idle_state_retention": 3600, "config_url": null, "udf_jar_url": "test/flink_test-1.0-SNAPSHOT-jar-with-dependencies.jar", "dirty_data_strategy": "0", "entrypoint": "test/flink_test-1.0-SNAPSHOT-jar-with-dependencies.jar", "dependency_jars": null, "dependency_files": null, "tm_cus": 1, "tm_slot_num": 3, "image": null, "feature": null, "flink_version": null, "operator_config": "xxx", "static_estimator_config": "xxx", "runtime_config": null }, "user_id": "xxx", "project_id": "xxx", "run_mode": "exclusive_cluster", "job_id": 90634, "name": "test_guoquan", "desc": "", "entrypoint_args": null, "status": "job_cancel_success" } }
  • 响应消息 表2 响应参数说明 参数名称 是否必选 参数类型 说明 is_success 否 String 执行请求是否成功。“true”表示请求执行成功。 message 否 String 系统提示信息,执行成功时,信息可能为空。 job_detail 否 Object 作业详情。请参见表3。 表3 job_detail参数说明 参数名称 是否必选 参数类型 说明 job_id 否 Long 作业ID。 name 否 String 作业名称。长度限制:0-57个字符。 desc 否 String 作业描述。长度限制:0-512个字符。 job_type 否 String 作业类型。 flink_sql_job:flink sql作业 flink_opensource_sql_job:flink opensource sql作业 flink_sql_edge_job:flink sql边缘作业 flink_jar_job:flink自定义作业 status 否 String 作业状态。 作业的状态如下: job_init:草稿 job_submitting:提交中 job_submit_fail:提交失败 job_running:运行中(开始计费,提交作业后,返回正常结果) job_running_exception:运行异常(停止计费。作业发生运行时异常,停止运行作业) job_downloading:下载中 job_idle:空闲 job_canceling:停止中 job_cancel_success:已停止 job_cancel_fail:停止失败 job_savepointing:保存点创建中 job_arrearage_stopped:因欠费被停止(结束计费。用户账户欠费,作业停止) job_arrearage_recovering:欠费作业恢复中(用户账户欠费,账户充值,作业恢复中) job_finish:已完成 status_desc 否 String 作业状态描述。 create_time 否 Long 作业创建时间。 start_time 否 Long 作业启动时间。 user_id 否 String 作业所属用户标识。 queue_name 否 String 队列名称。长度限制:1-128个字符。 project_id 否 String 作业所属项目标识。 sql_body 否 String Stream SQL语句。 savepoint_path 否 String 手动产生的Checkpoint的保存路径。 run_mode 否 String 作业运行模式。 shared_cluster:共享 exclusive_cluster:独享 edge_node:边缘节点 job_config 否 Object 作业配置, 具体参数说明请参见表4。 main_class 否 String jar包主类。例如,org.apache.spark.examples.streaming.JavaQueueStream entrypoint_args 否 String jar包作业运行参数,多个参数之间空格分隔。 execution_graph 否 String 作业执行计划。 update_time 否 Long 作业更新时间。 user_name 否 String 用户名,当“show_detail”为“false”时独有。 duration 否 Long 作业运行时长。 单位ms,“show_detail”为“false”时独有。 root_id 否 Long 父作业ID。“show_detail”为“false”时独有。 graph_editor_enabled 否 Boolean 作业的流图是否可编辑。“true”表示作业的流图可以编辑,“false”表示作业的流图不可以编辑。 has_savepoint 否 Boolean 作业是否有保存点。“true”表示作业有保存点,“false”表示作业没有保存点。 edge_group_ids 否 Array of Strings 边缘计算组ID列表。多个ID以逗号分隔。 restart_times 否 Integer 重启次数。 表4 job_config参数说明 参数名称 是否必选 参数类型 说明 checkpoint_enabled 否 Boolean 是否开启作业自动快照功能。 true:开启 false:关闭 默认为“false”。 checkpoint_interval 否 Integer 快照时间间隔。 单位为秒,默认值为“10”。 checkpoint_mode 否 String 快照模式,。两种可选: exactly_once:数据只被消费一次。 at_least_once:数据至少被消费一次。 默认值为“exactly_once”。 log_enabled 否 Boolean 是否启用日志存储。默认为“false”。 obs_bucket 否 String OBS桶名。 root_id 否 Integer 父作业ID。 edge_group_ids 否 Array of Strings 边缘计算组ID列表。多个ID以逗号分隔。 manager_cu_number 否 Integer 管理单元CU数。默认为“1”。 graph_editor_enabled 否 Boolean 流图编辑开关。默认为“false”。 graph_editor_data 否 String 流图编辑数据。默认为null。 executor_number 否 Integer 作业使用计算节点个数。 executor_cu_number 否 Integer 计算节点cu数。 cu_number 否 Integer 用户为作业选择的CU数量。 “show_detail”为“true”时独有。 最小值:2 最大值:400 默认为“2”。 parallel_number 否 Integer 用户设置的作业并行数。 “show_detail”为“true”时独有。 最小值:1 最大值:2000 默认为“1”。 smn_topic 否 String SMN主题名。当作业异常时,向该SMN主题推送告警信息。 restart_when_exception 否 Boolean 是否开启异常重启功能。 resume_checkpoint 否 Boolean 异常自动重启时,是否从最新checkpoint恢复。默认值为“false”。 resume_max_num 否 Integer 异常重试最大次数。-1代表无限。 checkpoint_path 否 String 检查点保存路径。 idle_state_retention 否 Integer 空闲状态过期周期。 config_url 否 String 用户上传的config包OBS路径。 udf_jar_url 否 String 用户已上传到DLI资源管理系统的程序包名,用户sql作业的udf jar通过该参数传入。 dirty_data_strategy 否 String 作业脏数据策略。 “2:obsDir”:保存,obsDir表示脏数据存储路径。 “1”:抛出异常。 “0”:忽略。 entrypoint 否 String 用户已上传到DLI资源管理系统的程序包名,用户自定义作业主类所在的jar包。 dependency_jars 否 Array of Strings 用户已上传到DLI资源管理系统的程序包名,用户自定义作业的其他依赖包。 dependency_files 否 Array of Strings 用户已上传到DLI资源管理系统的资源包名,用户自定义作业的依赖文件。 tm_cus 否 int 单TM所占CU数。 tm_slot_num 否 int 单TM Slot数。 image 否 String 自定义镜像。格式为:组织名/镜像名:镜像版本。 当用户设置“feature”为“custom”时,该参数生效。用户可通过与“feature”参数配合使用,指定作业运行使用自定义的Flink镜像。关于如何使用自定义镜像,请参考《数据湖探索用户指南》。 feature 否 String 自定义作业特性。表示用户作业使用的Flink镜像类型。 basic:表示使用DLI提供的基础Flink镜像。 custom:表示使用用户自定义的Flink镜像。 flink_version 否 String Flink版本。当用户设置“feature”为“basic”时,该参数生效。用户可通过与“feature”参数配合使用,指定作业运行使用的DLI基础Flink镜像的版本。 operator_config 否 String 各算子并行度参数,以json的形式展示各算子id和并行度。 static_estimator_config 否 String 静态流图资源预估参数,以json的形式展示。 runtime_config 否 String Flink作业运行时自定义优化参数。 real_cu_number 否 Integer 实际使用的CU数。默认值为“0”,表示此时以“cu_number”的值为准。
  • 在脚本中使用AI服务 推荐模型发布后,在图1中单击“使用”,可使用该推荐模型进行推荐。 系统支持使用服务编排或者脚本来调用推荐服务。 选择使用该推荐服务的应用,选择页签“在Script中使用”,单击“开发”。 图6 在脚本中使用 系统会自动为所选应用创建好调用该AI的脚本,代码示例如下: import * as aienable from 'aienable'; export class Input { @action.param({ type: "Any", required: false, description: "name" }) name: string; // name为已发布的预测/推荐服务名称 @action.param({ type: "Any", required: false, description: "input" }) dataInputs: JSON; } export class Output { @action.param({ type: "Any" }) result: JSON; } export class testAIEnable { @action.method({ input: "Input", output: "Output", description: "do a operation" }) run(input: Input): void { let client = aienable.newClient("recommendation_services") let result = client.recommend(input.name, input.dataInputs); console.log(result) } } 单击编辑器上方的,保存脚本。 单击编辑器上方的,运行脚本。 在页面底部“输入参数”页签输入请求参数,在图6中“输入参数详情”区域单击获取,给入参即相关字段配上测试值。 单击测试窗口右上角的,执行脚本。 其中,“recipients_id”为5配置的接收人对象字段值,该场景表示接受推荐内容的客户ID。以下输入参数中“fff7466a253c0e59499ea943462c10f9”和“677ea793bab5253b52c7f73f0e120b74”为有效的客户ID,“6775ba6a3e92020abc8e6cd6e19e867a”为无效的客户ID,即该客户ID不存在。 “N”表示给接收人推荐的产品数量。 { "name": "test_02", "dataInputs": { "recipients_id": [ "fff7466a253c0e59499ea943462c10f9", "677ea793bab5253b52c7f73f0e120b74", "6775ba6a3e92020abc8e6cd6e19e867a" ], "N": 3 } } 输出以下结果,表示调用推荐服务成功,给有效客户ID的推荐内容为5配置的产品ID。其中“rating”值为预测接收人购买该产品的概率。这里看出,当输入无效客户ID时,不会推荐相关内容。 { resCode: '0', resMsg: '成功', result: { 677ea793bab5253b52c7f73f0e120b74: [ { aienable__productId__ CS T: '5727b4e9463bfa0b43bf97397c4b7c44', rating: 0.9780523919210801 }, { aienable__productId__CST: '58e3dad74a022a8e41571be503143e5b', rating: 0.9343108103239535 }, { aienable__productId__CST: '58efb9b638561ce132216a9a612513e2', rating: 0.9228962093643385 } ], fff7466a253c0e59499ea943462c10f9: [ { aienable__productId__CST: '5727b4e9463bfa0b43bf97397c4b7c44', rating: 1 }, { aienable__productId__CST: '57f2bc497c1a3ebe41ba7a06d78ed159', rating: 0.979109618457509 }, { aienable__productId__CST: '574597aaf385996112490308e37399ce', rating: 0.9502617871072747 } ] } } 单击编辑页面上方的,启用脚本。
  • 在服务编排中使用AI服务 推荐模型发布后,在图1中单击“使用”,可使用该推荐模型进行推荐。 系统支持使用服务编排或者脚本来调用推荐服务。 选择使用该推荐服务的应用,保持默认所选页签“在Flow中使用”,单击“开发”。 图2 在服务编排中使用 系统会自动为所选应用创建好“AIExample”文件夹和归属于该文件夹的服务编排。 在弹出的服务编排编辑页面查看如下信息。 在页面右侧选择,在全局上下文页面查看到系统已自动创建如下变量。 图3 查看变量 表4 变量说明 变量名 类型 描述 dataInputs 任意 输入参数。 resCode 文本 返回码,如果返回“0”代表请求成功。 resMsg 文本 返回消息,如果成功状态,通常会返回“成功”,其他情况会返回具体的错误信息。 result 任意 调用推荐服务请求返回的推荐内容。 查看整个服务编排的入参、出参。 图4 查看入参出参 选择推荐服务图元,查看配置信息。 图5 图元配置 单击编辑器上方的,保存服务编排。 单击编辑器上方的,运行服务编排。 输入入参,入参可从图2中“输入参数详情”区域单击获取,给入参即相关字段配上测试值。 其中,“recipients_id”为5配置的接收人对象字段值,该场景表示接受推荐内容的客户ID。以下输入参数中“fff7466a253c0e59499ea943462c10f9”和“677ea793bab5253b52c7f73f0e120b74”为有效的客户ID,“6775ba6a3e92020abc8e6cd6e19e867a”为无效的客户ID,即该客户ID不存在。 “N”表示给接收人推荐的产品数量。 { "dataInputs": { "recipients_id": [ "fff7466a253c0e59499ea943462c10f9", "677ea793bab5253b52c7f73f0e120b74", "6775ba6a3e92020abc8e6cd6e19e867a" ], "N": 3 } } 输出以下结果,表示调用推荐服务成功,给有效客户ID的推荐内容为5配置的产品ID。其中,“rating”值为预测接收人购买该产品的概率。这里看出,当输入无效客户ID时,不会推荐相关内容。 { "interviewId": "002N000000pLvvBbbBke", "outputs": { "resCode": "0", "resMsg": "成功", "result": { "677ea793bab5253b52c7f73f0e120b74": [ { "aienable__productId__CST": "5727b4e9463bfa0b43bf97397c4b7c44", "rating": 0.9780523919210801 }, { "aienable__productId__CST": "58e3dad74a022a8e41571be503143e5b", "rating": 0.9343108103239535 }, { "aienable__productId__CST": "58efb9b638561ce132216a9a612513e2", "rating": 0.9228962093643385 } ], "fff7466a253c0e59499ea943462c10f9": [ { "aienable__productId__CST": "5727b4e9463bfa0b43bf97397c4b7c44", "rating": 1 }, { "aienable__productId__CST": "57f2bc497c1a3ebe41ba7a06d78ed159", "rating": 0.979109618457509 }, { "aienable__productId__CST": "574597aaf385996112490308e37399ce", "rating": 0.9502617871072747 } ] } } } 单击编辑器上方的,启用服务编排。
  • 操作步骤 在“故障单流程”应用开发工作台,单击左侧导航下方的,进入应用预览页面。 图1 选择预览 在右上角单击用户名,选择“业务配置中心”。 经典版开发环境的业务配置中心为白名单特性,使用前请联系后台管理人员开通。更多关于业务配置中心的介绍,请参见什么是业务配置中心。 图2 选择业务配置中心 在“应用配置”的App下,单击“故障单流程”。 图3 单击故障单流程 在左侧导航栏中,选择“流程配置”,单击需要定制修改的业务流程,例如“故障单处理流程”。 在右侧“场景详情”中,会展示该业务流程详情。 图4 查看业务流程详情 选择“业务模型”页签,显示该业务流程涉及的模型对象(在5中配置的),单击“新建”,可添加自定义字段。 图5 添加自定义字段 选择“场景流程”页签,显示该业务流程涉及的场景流程(在7中配置的)。 单击“新建”,可新增场景流程。单击列表中的流程标签,进入流程配置页面,单击左上方禁用图标,可对已有的流程进行修改。 图6 选择场景流程 图7 修改已有流程 选择“页面”页签,可查看到被流程所引用的页面列表。 图8 查看被流程引用的页面
  • 场景描述 本节介绍的是在应用内创建业务权限凭证,您还可以在管理中心进行配置,相关操作请参考设置业务权限。两者的区别是在应用中创建的业务权限凭证,可在打包发布应用时,将业务权限凭证一起发布出去,在管理中心创建业务权限凭证无法随应用发布出去。 通过该章节创建业务权限后,参考设置业务权限在权限配置的“业务权限凭证”页签,配置用户的业务权限。在自定义接口URL时,可通过配置该业务权限,控制只有该业务权限的用户才可访问自定义接口URL。自定义接口的业务权限配置,请参考如何自定义调用脚本的URL和如何自定义调用服务编排的URL。
  • 基于规则 “用户任务”图元接收人类型设置为“基于规则”时,可以将全局上下文中的变量拖入到条件输入框中。当条件输入框中的变量或条件为true时,将会把任务分配给选择框中配置的用户。您可以通过以下方式,配置接收任务的用户: 当前用户:把任务分配给执行当前用户任务的用户。 上级经理:把任务分配给执行当前用户任务的用户的上级经理。 特定的用户:把任务分配给选择框中选择的用户。 队列:把任务分配给选择框中选择的工作队列中的所有用户。 用户属性:根据用户对象的某一字段,进行任务的分配。 变量:根据输入框中的用户ID或用户名,将任务分配给相应的用户。 图6 基于规则
  • 名称和表达式 “用户任务”图元接收人类型设置为“名称和表达式”时,可以通过“表达式”、“用户”和“组”三种方式分配该任务的参与者。这时,泳道中的工作队列配置不起作用。 图5 名称和表达式 用户:在“取值”中,选择接收该任务的用户,不包括业务用户。 组:在“取值”中选择公共组,则该任务由公共组的成员去处理。公共组的成员可以是用户、业务用户、其他公共组的成员、角色或带有下属的角色中成员。如何创建工作组,请参见管理公共组。 表达式:当将“参与者”配置为“表达式”时,实际是一个变量。在“取值”中,可设置变量的值,变量值支持以下几种: 用户的用户名或用户ID,其中用户名前需要加“user:”前缀。 业务用户的用户名或业务用户ID,其中业务用户名前需要加“puser:”前缀。 公共组名称或者公共组ID,其中公共组名称前需要加“group:”前缀。 角色名称或者角色ID,其中角色名称前需要加“role:”前缀。 例如,分配任务接受者为用户名为“PortalUser1”的业务用户、用户名为“User1”的用户、用户ID为“10XX000000XXXXXXX”的用户、公共组名称为“group1”和角色名称为“role1”的合集,则取值为“"puser:PortalUser1,user:User1,10XX000000XXXXXXX,group:group1,role:role1"”。多个取值之间用英文逗号“,”分隔,取值外加英文双引号。
  • 当前泳道 “用户任务”图元接收人类型设置为“当前泳道”,将泳道和工作队列绑定,则处于该泳道的用户任务图元,由该泳道对应工作队列中的成员去处理。工作队列中的成员可以是多个用户、业务用户、公共组中成员、角色或带有下属的角色中成员。配置过程如下: 参考管理队列中操作,创建一个工作队列,将处理任务的用户或业务用户加入工作队列中。 例如,创建派单员工作队列“Dispatcher”。 图2 创建工作队列 如图3所示,“用户任务”的接收人类型选择“当前泳道”,可以将任务分配给“当前泳道角色的任意成员”或“当前泳道中的上一个任务被分配的人员”。 图3 用户任务中设置当前泳道接收 如图4所示,单击左侧泳道区域,在“泳道配置”中设置派单员工作队列“Dispatcher”。 处于该泳道的用户任务图元,则由工作队列“Dispatcher”中的成员去处理。 图4 设置泳道
  • 用户和业务用户 在进行任务分配时,低代码平台提供了两种用户可以进行任务的分配,分别是用户和业务用户。 用户(User):是租户账号或子账号开发者,用来管理应用和业务用户。购买AstroZero的租户账号默认拥有所有权限,是管理员用户,可添加子账号并为其配置需要的权限。 业务用户(即PortalUser):是访问在AstroZero中开发的业务应用的用户账号,即业务应用的使用者。 用户可以在工作流中通过用户任务图元,在用户任务配置页面的“接收人”模块,通过以下三种方式将任务分配给用户或业务用户。 当前泳道 流程发起人的主管 名称和表达式 基于规则 图1 接收人类型
  • 源码包与资产包对比 源码包和资产包都是应用发布类型,大部分的功能都是一致的,例如都分为全量和组件两种形式,都是按“编译-发布”的流程进行。目前来说,主要有以下几点不同之处: 不同的保护模式设置。 源码包中的所有组件都不受保护和限制,其保护模式也无法进行设置修改,这些组件在安装后可以被自定义编辑修改。而资产包的大部分组件默认在安装后是不允许被修改的,甚至可以设置某些组件不可见,如服务编排,脚本等,可防止泄露源代码,保护知识产权。其保护模式可以在编译设置中,进行修改。 二次开发与发布模式不同。 源码包在开发环境中安装后允许再次进行打包发布,而资产包安装后无法二次打包发布。另外,源码包只能发布到“我的仓库”,而资产包主要用于发布到应用市场。
  • 什么是应用包 轻应用或行业应用开发完成后,应用需要编译打包,这种编译后的压缩包即应用包。 应用包类型 在AstroZero中,编译打包的应用包类型有以下两种: 源码包:该类型包中的所有组件,都不受保护和限制。在其他环境安装后可编辑包中组件,即在原有基础上可进行再开发。若后续其他用户在开发环境安装后,会显示在开发环境首页的“项目”页签下。 资产包:该类型支持设置包中的组件,是否受保护。打包时不做编译设置,默认打出的包都是资产包,包中组件都为只读保护模式,将包安装到其他环境时,只能运行和预览,不可编辑包中组件。若后续其他用户在其他开发环境安装资产包后,应用会显示在开发环境首页的“库”页签下。 应用包类型的详细介绍,请参见源码包与资产包对比。 软件包环境 图1 环境介绍 AstroZero分为开发环境,沙箱环境和运行环境三个部分,更多介绍请参见基本概念。 开发者在开发环境开发应用和BO,开发完成后生成对应的软件包。 发布软件包到沙箱环境中进行测试。 测试通过后,发布安装到生产环境实际运行和维护。 仅专业收费版本支持沙箱环境和运行环境,免费版本无沙箱环境和运行环境权限。 软件包制作 应用或BO创建完成后,平台会同步创建同名的软件包。 对应用和BO内的组件,进行增删查改都会同步反映到软件包中。 开发者也可以在编译设置中,对软件包和其中组件的属性进行修改。
  • 操作步骤 登录AstroZero服务控制台。 在实例页面,单击“进入首页”,进入新版应用开发页面。 在左侧导航栏中,单击“资产”,进入资产页面。 将鼠标放在已创建的Native Service上,单击,选择“编辑”。 在NativeService配置页面,选择“导航”。 在“API设计”页签,单击“开始设计API”。 图1 开始设计API 选择“使用模板”,配置基本信息和新URL对应的版本号,单击“创建”。 图2 创建一个新版本 openApi版本:接口定义需要符合openApi规范,这里配置具体openApi的版本号。 选择模板:选择系统预置的模板。 版本:输入服务版本号。 标题:原生服务API的名称。 创建完成后,单击“新增资源”。 在“增加资源及操作方法”页面,配置相关参数,单击“确认”。 图3 增加资源及操作方法配置页面 输入一个新的资源路径(以/开头):与镜像文件中的接口路径保持一致。 方法:调用的方法,如GET(查询)、PUT(增加)、POST(修改)、DELETE(删除)、PATCH(对资源进行部分修改)。 操作名称:与镜像文件中的操作名称保持一致。 公共接口:若勾选,则只能在公共接口中调用,无法在服务编排和脚本中使用。 内容类型:当勾选“公共接口”时,您需要配置内容类型,即请求中的body类型。其中,“application/x-www-form-urlencoded”、“application/xml”、“multipart/form-data”、“text/html”和“text/plain”用于文件上传接口,选择该内容类型,只能调用post类型的方法。 描述:描述信息。 单击生成的方法,可以在右侧编辑方法的URL、Header、Response参数,需要和镜像文件中接口的URL参数、Header参数、请求参数、返回参数保持一致。编辑参数后,需要单击参数操作列的,再单击“保存”。 您可参考界面上“/case”、“/case/{CaseId}”两个示例编辑生成的方法。每个方法都需要定义Response参数,否则会部署失败。返回体数据结构在模式对象中定义。 当Body参数和Response参数较多,一些参数可以封装成对象类型的参数,并在“模式对象”页签设置该类型参数,注意“模式对象”页签中参数名与操作中URL参数不能同名。 支持按照操作名称和资源路径单,过滤或组合过滤搜索方法。 图4 编辑方法 图5 定义模式对象 参考8~10,新增其他API方法。 编辑方法完成后,需要手动删除“/case”、“/case/{CaseId}”两个示例,删除示例模式对象。 单击“保存”,创建的自定义接口会出现在页面上。 在页面右上方,单击,可以查看自定义接口中的方法和模型对象。单击,可导出该原生服务下接口定义yaml文件。 单击,发布API。 发布后如果需要修改API,需要单击,取消发布后进行修改,修改后再保存并发布。 已发布的API可能在服务编排中已经使用,如果修改API导致不兼容,请同步修改引用该API的服务编排。
  • 如何在脚本、服务编排、BPM中加密数据? 用户使用AstroZero的脚本、服务编排、流程编排BPM等开发的内容是不会加密存储的。如果用户需要加密数据,请使用加密类型的系统参数。 参考如何创建系统参数中操作,新建加密类型的系统参数。 例如,新建加密参数appClientId,注意要勾选“是否加密”。 图6 进入新建系统参数页面 图7 新建appClientId系统参数 在脚本、服务编排和流程编排BPM中,使用上一步创建的系统参数。 脚本:脚本代码中引入系统参数的代码行中,引入系统库,并使用“sys.getParameter('appClientId')”引入系统参数。 import * as sys from 'sys'; ...... let cliendId = sys.getParameter('appClientId'); 图8 在脚本中引入参数 服务编排:在服务编排“全局上下文”中新增公式变量,表达式输入“SYSPA RAM ETER('appClientId')”,引入系统参数。 图9 在服务编排中引入参数 BPM:在BPM的“全局上下文”中,新增文本类型的变量,图元配置中设置该变量,值输入“SYSPARAMETER('appClientId')”,引入系统参数。 图10 在BPM中引入参数
  • 场景描述 新增、查询系统参数并进行修改。系统参数创建后,可以在其他地方以“{!parameter_name}”方式引用。例如,在如下两个场景使用系统参数: 将系统公用邮箱设置为系统参数。 将系统定时数据清理的执行时间,设置为系统参数。例如,系统执行数据清理任务时,会自动查询是否配置了系统参数“bingo.expiretask.execute.time”(AstroZero已预置该系统参数),查询到后,会按照配置的时间来启动数据清理。 本节介绍的是在应用内配置系统参数,您还可以在管理中心创建系统参数,相关操作请参考配置系统参数。两者的区别是在应用里配置系统参数,可在打包发布应用时,将系统参数一起发布出去,在管理中心设置系统参数无法随应用发布出去。
共100000条