本文介绍设置湖仓版Job型资源组的作业优先级和查看优先级的方法。
前提条件
AnalyticDB for MySQL集群的内核版本为3.1.6.3及以上版本。
已创建Job型资源组,且提交作业时选择在Job型资源组中运行。
注意事项
暂不支持修改已提交(包含已提交未运行和已提交运行中)的作业的优先级。
功能概述
作业优先级指排队中的作业被分配资源的优先级。当湖仓版Job型资源组中并发执行的作业较多时,作业运行需要的资源会大于资源组的资源。AnalyticDB for MySQL湖仓版支持作业排队能力,新提交的作业会处于提交中的状态,不会失败。
在一些业务场景中,对作业执行和结果产出的先后有要求,例如,关键指标的产出依赖上游某个中间结果的产出时间,此时需要对上游处理的作业设置高优先级,保障该作业的资源。AnalyticDB for MySQL湖仓版Job型资源组内提供了作业优先级队列的能力,您可以设置作业的优先级,使不同作业进入不同的优先级队列(包括LOWEST队列、LOW队列、NORMAL队列和HIGH队列)。优先级高的作业会先运行。
设置作业优先级
作业优先级取值:HIGH、NORMAL、LOW和LOWEST。未设置优先级的作业默认为NORMAL。
ETL查询和普通查询(SELECT)的优先级为NORMAL。
不同的作业类型,作业优先级的设置方法不同,设置作业优先级的方法如下。
XIHE BSP设置作业优先级
Hint方式: /*+ query_priority= <优先级取值>*/
示例:设置XIHE BSP作业优先级为HIGH,使作业进入HIGH队列。
/*+ query_priority=HIGH*/ SELECT * FROM test_table;
Spark SQL设置作业优先级
SET方式:SET spark.adb.priority = <优先级取值>
示例:设置Spark SQL作业优先级为LOW,使作业进入LOW队列。
SET spark.adb.priority = LOW;
SELECT * FROM test_table;
Spark Batch设置作业优先级
配置Config参数: "conf": { "spark.adb.priority": "<优先级取值>"}
示例:设置Spark Batch作业优先级为HIGH,使作业进入HIGH队列。
{
"comments": [
"-- Here is just an example of SparkPi. Modify the content and run your spark program."
],
"args": [
"1000"
],
"file": "local:///tmp/spark-examples.jar",
"name": "SparkPi",
"className": "org.apache.spark.examples.SparkPi",
"conf": {
"spark.driver.resourceSpec": "medium",
"spark.executor.instances": 2,
"spark.executor.resourceSpec": "medium",
"spark.adb.priority": "HIGH"
}
}
查看作业优先级
查看XIHE BSP和Spark SQL作业优先级
登录云原生数据仓库AnalyticDB MySQL控制台,在作业开发>SQL开发页面的执行记录页签中查看作业的优先级。
查看Spark Batch作业优先级
登录云原生数据仓库AnalyticDB MySQL控制台,在作业开发>Spark Jar开发页面的应用列表页签中查看作业的优先级。