笔记本 API

原文链接 : http://zeppelin.apache.org/docs/0.7.2/rest-api/rest-notebook.html

译文链接 : http://www.apache.wiki/pages/viewpage.action?pageId=10031062

贡献者 : 片刻 ApacheCN Apache中文网

概述

Apache Zeppelin提供了几个REST API,用于交互和远程激活zeppelin功能。所有REST API都可以从以下端点开始http://[zeppelin-server]:[zeppelin-port]/api。需要注意的是Apache的齐柏林飞艇的REST API接收或返回JSON对象,建议你安装一些JSON观众如JSONView。如果您使用Apache Zeppelin并发现需要一个额外的REST API,请提出问题或向我们发送电子邮件

笔记本REST API支持以下操作:列表,创建,获取,删除,克隆,运行,导出,导入,具体如下表所示。

注意操作

笔记列表

| 描述 | 此GET方法列出了服务器上的可用注释。笔记本JSON包含了nameid所有音符。 | | 网址 | http://[zeppelin-server]:[zeppelin-port]/api/notebook | | 成功代码 | 200 | | 失败代码 | 500 | | 示例JSON响应 |

  1. {
  2. "status": "OK",
  3. "message": "",
  4. "body": [
  5. {
  6. "name":"Homepage",
  7. "id":"2AV4WUEMK"
  8. },
  9. {
  10. "name":"Zeppelin Tutorial",
  11. "id":"2A94M5J1Z"
  12. }
  13. ]
  14. }

|

创建新的笔记

| 描述 | 此POST方法使用给定的名称或默认名称创建一个新的注释,如果没有给定。返回的JSON的body字段包含新的note id。 | | 网址 | http://[zeppelin-server]:[zeppelin-port]/api/notebook | | 成功代码 | 201 | | 失败代码 | 500 | | 示例JSON输入(无段落) |

  1. {"name": "name of new note"}

| | JSON输入示例(含初始段落) |

  1. {
  2. "name": "name of new note",
  3. "paragraphs": [
  4. {
  5. "title": "paragraph title1",
  6. "text": "paragraph text1"
  7. },
  8. {
  9. "title": "paragraph title2",
  10. "text": "paragraph text2"
  11. }
  12. ]
  13. }

| | 示例JSON响应 |

  1. {
  2. "status": "CREATED",
  3. "message": "",
  4. "body": "2AZPHY918"
  5. }

|

获取所有段落的状态

| 描述 | 该GET方法通过给定的注释id获取所有段落的状态。返回的JSON的body字段包含由段落id,段落状态,段落完成日期,段落开始日期组成的数组。 | | 网址 | http://[zeppelin-server]:[zeppelin-port]/api/notebook/job/[noteId] | | 成功代码 | 200 | | 失败代码 | 500 | | 示例JSON响应 |

  1. {
  2. "status": "OK",
  3. "body": [
  4. {
  5. "id":"20151121-212654_766735423",
  6. "status":"FINISHED",
  7. "finished":"Tue Nov 24 14:21:40 KST 2015",
  8. "started":"Tue Nov 24 14:21:39 KST 2015"
  9. },
  10. {
  11. "progress":"1",
  12. "id":"20151121-212657_730976687",
  13. "status":"RUNNING",
  14. "finished":"Tue Nov 24 14:21:35 KST 2015",
  15. "started":"Tue Nov 24 14:21:40 KST 2015"
  16. }
  17. ]
  18. }

|

获取现有的笔记信息

| 描述 | 此GET方法使用给定的ID检索现有的注释的信息。返回的JSON的body字段包含有关注释中段落的信息。 | | 网址 | http://[zeppelin-server]:[zeppelin-port]/api/notebook/[noteId] | | 成功代码 | 200 | | 失败代码 | 500 | | 示例JSON响应 |

  1. {
  2. "status": "OK",
  3. "message": "",
  4. "body": {
  5. "paragraphs": [
  6. {
  7. "text": "%sql \nselect age, count(1) value\nfrom bank \nwhere age < 30 \ngroup by age \norder by age",
  8. "config": {
  9. "colWidth": 4,
  10. "graph": {
  11. "mode": "multiBarChart",
  12. "height": 300,
  13. "optionOpen": false,
  14. "keys": [
  15. {
  16. "name": "age",
  17. "index": 0,
  18. "aggr": "sum"
  19. }
  20. ],
  21. "values": [
  22. {
  23. "name": "value",
  24. "index": 1,
  25. "aggr": "sum"
  26. }
  27. ],
  28. "groups": [],
  29. "scatter": {
  30. "xAxis": {
  31. "name": "age",
  32. "index": 0,
  33. "aggr": "sum"
  34. },
  35. "yAxis": {
  36. "name": "value",
  37. "index": 1,
  38. "aggr": "sum"
  39. }
  40. }
  41. }
  42. },
  43. "settings": {
  44. "params": {},
  45. "forms": {}
  46. },
  47. "jobName": "paragraph_1423500782552_-1439281894",
  48. "id": "20150210-015302_1492795503",
  49. "results": {
  50. "code": "SUCCESS",
  51. "msg": [
  52. {
  53. "type": "TABLE",
  54. "data": "age\tvalue\n19\t4\n20\t3\n21\t7\n22\t9\n23\t20\n24\t24\n25\t44\n26\t77\n27\t94\n28\t103\n29\t97\n"
  55. }
  56. ]
  57. },
  58. "dateCreated": "Feb 10, 2015 1:53:02 AM",
  59. "dateStarted": "Jul 3, 2015 1:43:17 PM",
  60. "dateFinished": "Jul 3, 2015 1:43:23 PM",
  61. "status": "FINISHED",
  62. "progressUpdateIntervalMs": 500
  63. }
  64. ],
  65. "name": "Zeppelin Tutorial",
  66. "id": "2A94M5J1Z",
  67. "angularObjects": {},
  68. "config": {
  69. "looknfeel": "default"
  70. },
  71. "info": {}
  72. }
  73. }

|

删除笔记

| 描述 | 此DELETE方法将删除给定注释id的注释。 | | 网址 | http://[zeppelin-server]:[zeppelin-port]/api/notebook/[noteId] | | 成功代码 | 200 | | 失败代码 | 500 | | 示例JSON响应 |

  1. {"status": "OK","message": ""}

|

克隆笔记

| 描述 | 此POST方法将按照给定的ID克隆一个注释,并使用给定的名称或默认名称创建一个新的注释,如果没有给定的。返回的JSON的body字段包含新的note id。 | | 网址 | http://[zeppelin-server]:[zeppelin-port]/api/notebook/[noteId] | | 成功代码 | 201 | | 失败代码 | 500 | | 示例JSON输入 |

  1. {"name": "name of new note"}

| | 示例JSON响应 |

  1. {
  2. "status": "CREATED",
  3. "message": "",
  4. "body": "2AZPHY918"
  5. }

|

导出笔记

| 描述 | 此GET方法会导出一个给定ID的注释,并且gernerates一个JSON | | 网址 | http://[zeppelin-server]:[zeppelin-port]/api/notebook/export/[noteId] | | 成功代码 | 201 | | 失败代码 | 500 | | 示例JSON响应 |

  1. {
  2. "paragraphs": [
  3. {
  4. "text": "%md This is my new paragraph in my new note",
  5. "dateUpdated": "Jan 8, 2016 4:49:38 PM",
  6. "config": {
  7. "enabled": true
  8. },
  9. "settings": {
  10. "params": {},
  11. "forms": {}
  12. },
  13. "jobName": "paragraph_1452300578795_1196072540",
  14. "id": "20160108-164938_1685162144",
  15. "dateCreated": "Jan 8, 2016 4:49:38 PM",
  16. "status": "READY",
  17. "progressUpdateIntervalMs": 500
  18. }
  19. ],
  20. "name": "source note for export",
  21. "id": "2B82H3RR1",
  22. "angularObjects": {},
  23. "config": {},
  24. "info": {}
  25. }

|

导入笔记

| 描述 | 该POST方法从注释JSON输入中输入一个注释 | | 网址 | http://[zeppelin-server]:[zeppelin-port]/api/notebook/import | | 成功代码 | 201 | | 失败代码 | 500 | | 示例JSON输入 |

  1. {
  2. "paragraphs": [
  3. {
  4. "text": "%md This is my new paragraph in my new note",
  5. "dateUpdated": "Jan 8, 2016 4:49:38 PM",
  6. "config": {
  7. "enabled": true
  8. },
  9. "settings": {
  10. "params": {},
  11. "forms": {}
  12. },
  13. "jobName": "paragraph_1452300578795_1196072540",
  14. "id": "20160108-164938_1685162144",
  15. "dateCreated": "Jan 8, 2016 4:49:38 PM",
  16. "status": "READY",
  17. "progressUpdateIntervalMs": 500
  18. }
  19. ],
  20. "name": "source note for export",
  21. "id": "2B82H3RR1",
  22. "angularObjects": {},
  23. "config": {},
  24. "info": {}
  25. }

| | 示例JSON响应 |

  1. {
  2. "status": "CREATED",
  3. "message": "",
  4. "body": "2AZPHY918"
  5. }

|

运行所有段落

| 描述 | 此POST方法运行给定注释id中的所有段落。 如果找不到Note id 404返回。如果解释器有问题返回412错误。 | | 网址 | http://[zeppelin-server]:[zeppelin-port]/api/notebook/job/[noteId] | | 成功代码 | 200 | | 失败代码 | 404或412 | | 示例JSON响应 |

  1. {"status": "OK"}

| | 示例JSON错误响应 | { “status”: “NOTFOUND”, “message”: “note not found.” } { “status”: “PRECONDITIONFAILED”, “message”: “paragraph1469771130099-278315611 Not selected or Invalid Interpreter bind” } |

停止所有段落

| 描述 | 此DELETE方法将停止给定注释id中的所有段落。 | | 网址 | http://[zeppelin-server]:[zeppelin-port]/api/notebook/job/[noteId] | | 成功代码 | 200 | | 失败代码 | 500 | | 示例JSON响应 |

  1. {"status":"OK"}

|

清除所有段落结果

| 描述 | 此PUT方法清除给定id的注释的所有段落结果。 | | 网址 | http://[zeppelin-server]:[zeppelin-port]/api/notebook/[noteId]/clear | | 成功代码 | 200 | | 禁止代码 | 401 | | 找不到代码 | 404 | | 失败代码 | 500 | | 示例JSON响应 |

  1. {"status": "OK"}

|

段落操作

创建一个新的段落

| 描述 | 此POST方法使用JSON有效载荷创建一个新段落。返回的JSON的body字段包含新的段落ID。 | | 网址 | http://[zeppelin-server]:[zeppelin-port]/api/notebook/[noteId]/paragraph | | 成功代码 | 201 | | 失败代码 | 500 | | 示例JSON输入(添加到最后) |

  1. {
  2. "title": "Paragraph insert revised",
  3. "text": "%spark\nprintln(\"Paragraph insert revised\")"
  4. }

| | JSON输入示例(添加到特定索引) |

  1. {
  2. "title": "Paragraph insert revised",
  3. "text": "%spark\nprintln(\"Paragraph insert revised\")",
  4. "index": 0
  5. }

| | 示例JSON响应 |

  1. {
  2. "status": "CREATED",
  3. "message": "",
  4. "body": "20151218-100330_1754029574"
  5. }

|

获取段落信息

| 描述 | 此GET方法使用给定的id检索现有段落的信息。返回的JSON的body字段包含有关段落的信息。 | | 网址 | http://[zeppelin-server]:[zeppelin-port]/api/notebook/[noteId]/paragraph/[paragraphId] | | 成功代码 | 200 | | 失败代码 | 500 | | 示例JSON响应 |

  1. {
  2. "status": "OK",
  3. "message": "",
  4. "body": {
  5. "title": "Paragraph2",
  6. "text": "%spark\n\nprintln(\"it's paragraph2\")",
  7. "dateUpdated": "Dec 18, 2015 7:33:54 AM",
  8. "config": {
  9. "colWidth": 12,
  10. "graph": {
  11. "mode": "table",
  12. "height": 300,
  13. "optionOpen": false,
  14. "keys": [],
  15. "values": [],
  16. "groups": [],
  17. "scatter": {}
  18. },
  19. "enabled": true,
  20. "title": true,
  21. "editorMode": "ace/mode/scala"
  22. },
  23. "settings": {
  24. "params": {},
  25. "forms": {}
  26. },
  27. "jobName": "paragraph_1450391574392_-1890856722",
  28. "id": "20151218-073254_1105602047",
  29. "results": {
  30. "code": "SUCCESS",
  31. "msg": [
  32. {
  33. "type": "TEXT",
  34. "data": "it's paragraph2\n"
  35. }
  36. ]
  37. },
  38. "dateCreated": "Dec 18, 2015 7:32:54 AM",
  39. "dateStarted": "Dec 18, 2015 7:33:55 AM",
  40. "dateFinished": "Dec 18, 2015 7:33:55 AM",
  41. "status": "FINISHED",
  42. "progressUpdateIntervalMs": 500
  43. }
  44. }

|

获取单个段落的状态

| 描述 | 该GET方法通过给定的注释和段落ID获取单个段落的状态。返回的JSON的body字段包含由段落id,段落状态,段落完成日期,段落开始日期组成的数组。 | | 网址 | http://[zeppelin-server]:[zeppelin-port]/api/notebook/job/[noteId]/[paragraphId] | | 成功代码 | 200 | | 失败代码 | 500 | | 示例JSON响应 |

  1. {
  2. "status": "OK",
  3. "body": {
  4. "id":"20151121-212654_766735423",
  5. "status":"FINISHED",
  6. "finished":"Tue Nov 24 14:21:40 KST 2015",
  7. "started":"Tue Nov 24 14:21:39 KST 2015"
  8. }
  9. }

|

更新段落配置

| 描述 | 此PUT方法使用给定的ID更新段落配置,以便用户可以更改段落设置,如图形类型,显示或隐藏编辑器/结果和段落大小等。您可以更新所需的某些字段,例如,colWidth只能通过发送请求更新字段与有效载荷{"colWidth": 12.0}。 | | 网址 | http://[zeppelin-server]:[zeppelin-port]/api/notebook/[noteId]/paragraph/[paragraphId]/config | | 成功代码 | 200 | | 错误请求代码 | 400 | | 禁止代码 | 403 | | 找不到代码 | 404 | | 失败代码 | 500 | | 示例JSON输入 |

  1. {
  2. "colWidth": 6.0,
  3. "graph": {
  4. "mode": "lineChart",
  5. "height": 200.0,
  6. "optionOpen": false,
  7. "keys": [
  8. {
  9. "name": "age",
  10. "index": 0.0,
  11. "aggr": "sum"
  12. }
  13. ],
  14. "values": [
  15. {
  16. "name": "value",
  17. "index": 1.0,
  18. "aggr": "sum"
  19. }
  20. ],
  21. "groups": [],
  22. "scatter": {}
  23. },
  24. "editorHide": true,
  25. "editorMode": "ace/mode/markdown",
  26. "tableHide": false
  27. }

| | 示例JSON响应 |

  1. {
  2. "status":"OK",
  3. "message":"",
  4. "body":{
  5. "text":"%sql \nselect age, count(1) value\nfrom bank \nwhere age \u003c 30 \ngroup by age \norder by age",
  6. "config":{
  7. "colWidth":6.0,
  8. "graph":{
  9. "mode":"lineChart",
  10. "height":200.0,
  11. "optionOpen":false,
  12. "keys":[
  13. {
  14. "name":"age",
  15. "index":0.0,
  16. "aggr":"sum"
  17. }
  18. ],
  19. "values":[
  20. {
  21. "name":"value",
  22. "index":1.0,
  23. "aggr":"sum"
  24. }
  25. ],
  26. "groups":[],
  27. "scatter":{}
  28. },
  29. "tableHide":false,
  30. "editorMode":"ace/mode/markdown",
  31. "editorHide":true
  32. },
  33. "settings":{
  34. "params":{},
  35. "forms":{}
  36. },
  37. "apps":[],
  38. "jobName":"paragraph1423500782552-1439281894",
  39. "id":"20150210-015302_1492795503",
  40. "results":{
  41. "code":"SUCCESS",
  42. "msg": [
  43. {
  44. "type":"TABLE",
  45. "data":"age\tvalue\n19\t4\n20\t3\n21\t7\n22\t9\n23\t20\n24\t24\n25\t44\n26\t77\n27\t94\n28\t103\n29\t97\n"
  46. }
  47. ]
  48. },
  49. "dateCreated":"Feb 10, 2015 1:53:02 AM",
  50. "dateStarted":"Jul 3, 2015 1:43:17 PM",
  51. "dateFinished":"Jul 3, 2015 1:43:23 PM",
  52. "status":"FINISHED",
  53. "progressUpdateIntervalMs":500
  54. }
  55. }

|

删除一段

| 描述 | 此DELETE方法通过给定的注释和段落ID删除段落。 | | 网址 | http://[zeppelin-server]:[zeppelin-port]/api/notebook/[noteId]/paragraph/[paragraphId] | | 成功代码 | 200 | | 失败代码 | 500 | | 示例JSON响应 |

  1. {"status": "OK","message": ""}

|

异步运行段落

| 描述 | 此POST方法通过给定的注释和段落ID异步运行段落。即使该段落的执行失败,该API也会始终返回SUCCESS,因为API是异步的 | | 网址 | http://[zeppelin-server]:[zeppelin-port]/api/notebook/job/[noteId]/[paragraphId] | | 成功代码 | 200 | | 失败代码 | 500 | | 示例JSON输入(可选,仅当需要更新动态表单的值时才需要) |

  1. {
  2. "name": "name of new note",
  3. "params": {
  4. "formLabel1": "value1",
  5. "formLabel2": "value2"
  6. }
  7. }

| | 示例JSON响应 |

  1. {“status”:“OK”}

|

同步运行段落

| 描述 | 此POST方法通过给定的注释和段落ID同步运行段落。该API可以根据段执行的结果返回SUCCESS或ERROR | | 网址 | http://[zeppelin-server]:[zeppelin-port]/api/notebook/run/[noteId]/[paragraphId] | | 成功代码 | 200 | | 失败代码 | 500 | | 示例JSON输入(可选,仅当需要更新动态表单的值时才需要) |

  1. {
  2. "name": "name of new note",
  3. "params": {
  4. "formLabel1": "value1",
  5. "formLabel2": "value2"
  6. }
  7. }

| | 示例JSON响应 |

  1. {"status": "OK"}

| | 示例JSON错误 |

  1. {
  2. "status": "INTERNAL_SERVER_ERROR",
  3. "body": {
  4. "code": "ERROR",
  5. "type": "TEXT",
  6. "msg": "bash: -c: line 0: unexpected EOF while looking for matching ``'\nbash: -c: line 1: syntax error: unexpected end of file\nExitValue: 2"
  7. }
  8. }

|

停止一段

| 描述 | 该DELETE方法通过给定的注释和段落ID来停止段落。 | | 网址 | http://[zeppelin-server]:[zeppelin-port]/api/notebook/job/[noteId]/[paragraphId] | | 成功代码 | 200 | | 失败代码 | 500 | | 示例JSON响应 |

  1. {"status": "OK"}

|

将段落移动到特定索引

| 描述 | 此POST方法将一个段落从注释移动到特定的索引(顺序)。 | | 网址 | http://[zeppelin-server]:[zeppelin-port]/api/notebook/[noteId]/paragraph/[paragraphId]/move/[newIndex] | | 成功代码 | 200 | | 失败代码 | 500 | | 示例JSON响应 |

  1. {"status": "OK","message": ""}

|

全文搜索所有笔记中的段落

| 描述 | GET 请求将返回匹配段落的列表 | | 网址 | http://[zeppelin-server]:[zeppelin-port]/api/notebook/search?q=[query] | | 成功代码 | 200 | | 失败代码 | 500 | | 示例JSON响应 |

  1. {
  2. "status": "OK",
  3. "body": [
  4. {
  5. "id": "/paragraph/",
  6. "name":"Note Name",
  7. "snippet":"",
  8. "text":""
  9. }
  10. ]
  11. }

|

Cron工作

添加Cron作业

| 描述 | 此POST方法将cron作业添加到给定的注释id中。 | | 网址 | http://[zeppelin-server]:[zeppelin-port]/api/notebook/cron/[noteId] | | 成功代码 | 200 | | 失败代码 | 500 | | 示例JSON输入 |

  1. {"cron": "cron expression of note"}

| | 示例JSON响应 |

  1. {"status": "OK"}

|

删除Cron作业

| 描述 | 该DELETE方法通过给定的注释id删除cron作业。 | | 网址 | http://[zeppelin-server]:[zeppelin-port]/api/notebook/cron/[noteId] | | 成功代码 | 200 | | 失败代码 | 500 | | 示例JSON响应 |

  1. {"status": "OK"}

|

获得Cron工作

| 描述 | 该GET方法获取给定注释id的cron作业表达式。返回的JSON的body字段包含cron表达式。 | | 网址 | http://[zeppelin-server]:[zeppelin-port]/api/notebook/cron/[noteId] | | 成功代码 | 200 | | 失败代码 | 500 | | 示例JSON响应 |

  1. {"status": "OK", "body": "* * * * * ?"}

|

允许

获取注释权限信息

| 描述 | 此GET方法获取注释授权信息。 | | 网址 | http://[zeppelin-server]:[zeppelin-port]/api/notebook/[noteId]/permissions | | 成功代码 | 200 | | 禁止代码 | 403 | | 失败代码 | 500 | | 示例JSON响应 |

  1. {
  2. "status":"OK",
  3. "message":"",
  4. "body":{
  5. "readers":[
  6. "user2"
  7. ],
  8. "owners":[
  9. "user1"
  10. ],
  11. "writers":[
  12. "user2"
  13. ]
  14. }
  15. }

|

设置备注权限

| 描述 | 此PUT方法设置备注授权信息。 | | 网址 | http://[zeppelin-server]:[zeppelin-port]/api/notebook/[noteId]/permissions | | 成功代码 | 200 | | 禁止代码 | 403 | | 失败代码 | 500 | | 示例JSON输入 |

  1. {
  2. "readers": [
  3. "user1"
  4. ],
  5. "owners": [
  6. "user2"
  7. ],
  8. "writers": [
  9. "user1"
  10. ]
  11. }

| | 示例JSON响应 |

  1. {
  1. "status": "OK"
  2. }

|