• 1.Linkis接口规范
  • 2.WebSocket接口汇总
  • 3.接口详解
    • 1).建立连接
    • 2).提交执行
    • 3).任务状态、日志、进度主动推送

    Linkis提供了WebSocket的接入方式,前端只需要按照Linkis的WebSocket规范就可以实时和Linkis进行交互,不需要通过Restful进行轮询。

    1.Linkis接口规范

    Linkis在前后端进行交互的时候,定义了一套自己的接口规范。

    如果您对接口规范感兴趣,请点击这里查看接口规范

    2.WebSocket接口汇总

    我们提供以下几个接口,方便用户快速提交执行Job,获取执行结果。

    • 建立WebSocket连接

    • 提交执行

    • 服务端主动推回状态、日志和进度

    3.接口详解

    1).建立连接

    此接口是为了和Linkis建立一个WebSocket连接。

    • /api/rest_j/entrance/connect

    • 请求方式 GET

    • 响应状态码 101

    2).提交执行

    请求执行任务是将用户的作业提交到Linkis进行执行的接口

    • 接口 /api/rest_j/entrance/execute

    • 提交方式 POST

    • 请求JSON示例

    1. {
    2. "method":"/api/rest_j/v1/entrance/execute",
    3. "data":{
    4. "params": {
    5. "variable":{
    6. "k1":"v1"
    7. },
    8. "configuration":{
    9. "special":{
    10. "k2":"v2"
    11. },
    12. "runtime":{
    13. "k3":"v3"
    14. },
    15. "startup":{
    16. "k4":"v4"
    17. }
    18. }
    19. },
    20. "executeApplicationName":"spark",
    21. "executionCode":"show tables",
    22. "runType":"sql",
    23. "source":{
    24. "scriptPath": "/home/Linkis/Linkis.sql"
    25. },
    26. "websocketTag":"37fcbd8b762d465a0c870684a0261c6e"
    27. }
    28. }
    • 请求体data中的参数描述如下
    参数名 参数定义 类型 备注
    executeApplicationName 用户所期望使用的引擎服务,如Spark、hive等 String 不可为空
    requestApplicationName 发起请求的系统名 String 可以为空
    params 用户指定的运行服务程序的参数 Map 必填,里面的值可以为空
    executionCode 用户提交的执行代码 String 不可为空
    runType 当用户执行如spark服务时,可以选择python、R、SQL等runType String 不可为空
    scriptPath 用户提交代码脚本的存放路径 String 如果是IDE的话,与executionCode不能同时为空
    1. 1 请求体参数描述
    • 返回示例
    1. {
    2. "method": "/api/rest_j/v1/entrance/execute",
    3. "status": 0,
    4. "message": "请求执行成功",
    5. "data": {
    6. "execID": "030418IDEhivebdpdwc010004:10087IDE_johnnwang_21",
    7. "taskID": "123"
    8. }
    9. }
    • execID是用户任务提交到UJES之后,为该任务生成的唯一标识的执行ID,为String类型,这个ID只在任务运行时有用,类似PID的概念。ExecID的设计为(requestApplicationName长度)(executeAppName长度1)(Instance长度2)${requestApplicationName}${executeApplicationName}${entranceInstance信息ip+port}${requestApplicationName}${umUser}${index}
    • taskID 是表示用户提交task的唯一ID,这个ID由数据库自增生成,为Long 类型

    3).任务状态、日志、进度主动推送

    提交执行之后,服务器会主动推送任务的状态、日志、进度等信息,您也可以用WebSocket方式去主动请求状态、日志、进度。

    服务器主动推送的内容如下:

    • 日志
    1. {
    2. "method": "/api/rest_j/v1/entrance/${execID}/log",
    3. "status": 0,
    4. "message": "返回日志信息",
    5. "data": {
    6. "execID": "${execID}",
    7. "log": ["error日志","warn日志","info日志", "all日志"],
    8. "taskID":28594,
    9. "fromLine": 56
    10. },
    11. "websocketTag":"37fcbd8b762d465a0c870684a0261c6e"
    12. }
    • 状态
    1. {
    2. "method": "/api/rest_j/v1/entrance/${execID}/status",
    3. "status": 0,
    4. "message": "返回状态信息",
    5. "data": {
    6. "execID": "${execID}",
    7. "taskID":28594,
    8. "status": "Running",
    9. },
    10. "websocketTag":"37fcbd8b762d465a0c870684a0261c6e"
    11. }
    • 进度
    1. {
    2. "method": "/api/rest_j/v1/entrance/${execID}/log",
    3. "status": 0,
    4. "message": "返回进度信息信息",
    5. "data": {
    6. "execID": "${execID}",
    7. "taskID":28594,
    8. "progress": 0.2,
    9. "progressInfo": [
    10. {
    11. "id": "job-1",
    12. "succeedTasks": 2,
    13. "failedTasks": 0,
    14. "runningTasks": 5,
    15. "totalTasks": 10
    16. },
    17. {
    18. "id": "job-2",
    19. "succeedTasks": 5,
    20. "failedTasks": 0,
    21. "runningTasks": 5,
    22. "totalTasks": 10
    23. }
    24. ]
    25. },
    26. "websocketTag":"37fcbd8b762d465a0c870684a0261c6e"
    27. }