如何通过api查看SQL运行进度

  其他常见问题
内容纲要

概要描述

有些用户需要通过自己的运维管理平台管理提交到我们quark的Query。主要是查看任务进度

详细描述

实现原理

1.每个session只会执⾏⼀个查询语句(如SQL)。
2.执⾏查询语句之前,通过参数ngmr.session.name为session设置⼀个⾃定义名称。
3.通过⾃定义的session名称,查看最近的查询语句的执⾏状态/耗时等信息,或者kill该查询。

实现方式

1.为session设置⾃定义名称
⽅式1: 在执⾏SQL之前执⾏:set ngmr.session.name=my.s2;

⽅式2: beeline -u "jdbc:hive2://test2:10000/default;?ngmr.session.name=my.s2" -n admin -p admin –maxWidth=1000

2.通过DBAService获取运行中的查询

 curl -X POST "http://172.22.23.4:4048/api/insights/instance/query/sqlList?guardian_access_token=t4Dwqew6MXmaICtHBV2i-KTDH" -H "accept: */*" -H "Content-Type: application/json" -d "{\"serverKey\":\"inceptor1@172.22.23.4:8888\",\"pagination\":{\"pageNumber\":1,\"pageSize\":1},\"filters\":{\"status\":[\"RUNNING\",\"SUBMITTED\",\"FETCHRESULT\",\"FILECOMMIT\",\"POSTRUN\"]},\"sorter\":{},\"enableHistory\":false}"

3.参数说明

{
  "serverKey": "quark1@172.18.128.103:8888", // quark服务唯一标识
  "pagination": {
    "pageNumber": 1,
    "pageSize": 20
  },
  "filters": {
    "status": [  // 运行中的任务的不同阶段状态
      "RUNNING",
      "SUBMITTED",
      "FETCHRESULT",
      "FILECOMMIT",
      "POSTRUN"
    ],
    "sessionName": "my.s2" // 前面提交设置的ngmr.session.name的值
  },
  "sorter": {},
  "enableHistory": false    // 非历史查询
}

4.返回结果

{
  "total": 2,
  "data": {
    "queryLimitCN": null,
    "queryLimitEN": null,
    "sqls": [
      {
        "serverKey": "Inceptor::linux-idc-128-103::9c77aaab-29c4-4d4f-a733-d7c091781439",
        "sqlId": 55636,            // 查询任务ID,后面kill会需要
        "sqlContent": "SELECT *FROM dlx.product_dw WHERE price_group_id='L3'",              // 查询任务详情
        "mode": "cluster",         // 查询任务的执行模式
        "group": "inceptor",
        "user": "hive",            // 查询任务的提交用户
        "sessionId": 81692,
        "sessionName": "",
        "status": "FETCHRESULT",   // 查询任务当前执行阶段状态,FAILED表示失败,SUCCESS表示成功
        "errMessage": null,        // 查询任务的报错信息
        "submissionTime": 1684323388675, // 查询任务开始时间
        "completionTime": 0,       // 查询任务完成时间,0表示未结束
        "duration": 2844654,       // 查询任务总耗时
        "latestTime": 1684323390612,
        "jobStats": { // job的执行进度
          "running": 0,
          "completed": 1,
          "failed": 0,
          "skipped": 0,
          "unknown": 0,
          "waiting": 0,
          "expected": 0,
          "totalCost": 0
        },
        "stageStats": {// stage的执行进度
          "running": 0,
          "completed": 1,
          "failed": 0,
          "skipped": 0,
          "unknown": 0,
          "waiting": 0,
          "expected": 1,
          "totalCost": 0
        },
        "taskStats": { // task的执行进度
          "running": 0,    // 查询任务占用的计算资源(executor核数)
          "completed": 47,
          "failed": 0,
          "skipped": 0,
          "unknown": 0,
          "waiting": 0,
          "expected": 47,
          "totalCost": 20593
        },
        "poolNameSet": [    // 查询任务的资源池/调度池
          "Q1"
        ],
        "jobTotal": 1,
        "stageTotal": 1,
        "taskTotal": 47,
        "tags": "FINISHED",
        "sqlLength": 53,
        "shuffleReadSize": 0,
        "shuffleWriteSize": 0,
        "taskCost": 20462,
        "tables": [
          "dlx.product_dw"
        ],
        "inceptorTxnIds": [],
        "waitArgoHoloTxnIds": [],
        "blockArgoHoloTxnIds": [],
        "argoHoloTxnIds": [
          0
        ],
        "taskAbnormal": [],
        "waitTime": 36,
        "sqlType": "",
        "uniqueSign": "Q09NTU9OK0luY2VwdG9yOjpsaW51eC1pZGMtMTI4LTEwMzo6OWM3N2FhYWItMjljNC00ZDRmLWE3MzMtZDdjMDkxNzgxNDM5KzU1NjM2" 
      }
    ],
    "statistics": {
      "running": 2,
      "success": 0,
      "failed": 0
    }
  },
  "messageCode": 601,
  "message": "Success",
  "info": [],
  "warning": [],
  "error": [],
  "watchmanTimestamp": 1684326233330
}

注意事项

1.请确保inceptor或者quark都打了最新版本的patch
2.dba升级dba-9.4.2-final或以上版本
3.提交任务时设置的sessionName

这篇文章对您有帮助吗?

平均评分 0 / 5. 次数: 0

尚无评价,您可以第一个评哦!

非常抱歉,这篇文章对您没有帮助.

烦请您告诉我们您的建议与意见,以便我们改进,谢谢您。