笔记本 API
原文链接 : http://zeppelin.apache.org/docs/0.7.2/rest-api/rest-notebook.html
译文链接 : http://www.apache.wiki/pages/viewpage.action?pageId=10031062
概述
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包含了name
和id
所有音符。 |
| 网址 | http://[zeppelin-server]:[zeppelin-port]/api/notebook
|
| 成功代码 | 200 |
| 失败代码 | 500 |
| 示例JSON响应 |
{
"status": "OK",
"message": "",
"body": [
{
"name":"Homepage",
"id":"2AV4WUEMK"
},
{
"name":"Zeppelin Tutorial",
"id":"2A94M5J1Z"
}
]
}
|
创建新的笔记
| 描述 | 此POST
方法使用给定的名称或默认名称创建一个新的注释,如果没有给定。返回的JSON的body字段包含新的note id。 |
| 网址 | http://[zeppelin-server]:[zeppelin-port]/api/notebook
|
| 成功代码 | 201 |
| 失败代码 | 500 |
| 示例JSON输入(无段落) |
{"name": "name of new note"}
| | JSON输入示例(含初始段落) |
{
"name": "name of new note",
"paragraphs": [
{
"title": "paragraph title1",
"text": "paragraph text1"
},
{
"title": "paragraph title2",
"text": "paragraph text2"
}
]
}
| | 示例JSON响应 |
{
"status": "CREATED",
"message": "",
"body": "2AZPHY918"
}
|
获取所有段落的状态
| 描述 | 该GET
方法通过给定的注释id获取所有段落的状态。返回的JSON的body字段包含由段落id,段落状态,段落完成日期,段落开始日期组成的数组。 |
| 网址 | http://[zeppelin-server]:[zeppelin-port]/api/notebook/job/[noteId]
|
| 成功代码 | 200 |
| 失败代码 | 500 |
| 示例JSON响应 |
{
"status": "OK",
"body": [
{
"id":"20151121-212654_766735423",
"status":"FINISHED",
"finished":"Tue Nov 24 14:21:40 KST 2015",
"started":"Tue Nov 24 14:21:39 KST 2015"
},
{
"progress":"1",
"id":"20151121-212657_730976687",
"status":"RUNNING",
"finished":"Tue Nov 24 14:21:35 KST 2015",
"started":"Tue Nov 24 14:21:40 KST 2015"
}
]
}
|
获取现有的笔记信息
| 描述 | 此GET
方法使用给定的ID检索现有的注释的信息。返回的JSON的body字段包含有关注释中段落的信息。 |
| 网址 | http://[zeppelin-server]:[zeppelin-port]/api/notebook/[noteId]
|
| 成功代码 | 200 |
| 失败代码 | 500 |
| 示例JSON响应 |
{
"status": "OK",
"message": "",
"body": {
"paragraphs": [
{
"text": "%sql \nselect age, count(1) value\nfrom bank \nwhere age < 30 \ngroup by age \norder by age",
"config": {
"colWidth": 4,
"graph": {
"mode": "multiBarChart",
"height": 300,
"optionOpen": false,
"keys": [
{
"name": "age",
"index": 0,
"aggr": "sum"
}
],
"values": [
{
"name": "value",
"index": 1,
"aggr": "sum"
}
],
"groups": [],
"scatter": {
"xAxis": {
"name": "age",
"index": 0,
"aggr": "sum"
},
"yAxis": {
"name": "value",
"index": 1,
"aggr": "sum"
}
}
}
},
"settings": {
"params": {},
"forms": {}
},
"jobName": "paragraph_1423500782552_-1439281894",
"id": "20150210-015302_1492795503",
"results": {
"code": "SUCCESS",
"msg": [
{
"type": "TABLE",
"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"
}
]
},
"dateCreated": "Feb 10, 2015 1:53:02 AM",
"dateStarted": "Jul 3, 2015 1:43:17 PM",
"dateFinished": "Jul 3, 2015 1:43:23 PM",
"status": "FINISHED",
"progressUpdateIntervalMs": 500
}
],
"name": "Zeppelin Tutorial",
"id": "2A94M5J1Z",
"angularObjects": {},
"config": {
"looknfeel": "default"
},
"info": {}
}
}
|
删除笔记
| 描述 | 此DELETE
方法将删除给定注释id的注释。 |
| 网址 | http://[zeppelin-server]:[zeppelin-port]/api/notebook/[noteId]
|
| 成功代码 | 200 |
| 失败代码 | 500 |
| 示例JSON响应 |
{"status": "OK","message": ""}
|
克隆笔记
| 描述 | 此POST
方法将按照给定的ID克隆一个注释,并使用给定的名称或默认名称创建一个新的注释,如果没有给定的。返回的JSON的body字段包含新的note id。 |
| 网址 | http://[zeppelin-server]:[zeppelin-port]/api/notebook/[noteId]
|
| 成功代码 | 201 |
| 失败代码 | 500 |
| 示例JSON输入 |
{"name": "name of new note"}
| | 示例JSON响应 |
{
"status": "CREATED",
"message": "",
"body": "2AZPHY918"
}
|
导出笔记
| 描述 | 此GET
方法会导出一个给定ID的注释,并且gernerates一个JSON |
| 网址 | http://[zeppelin-server]:[zeppelin-port]/api/notebook/export/[noteId]
|
| 成功代码 | 201 |
| 失败代码 | 500 |
| 示例JSON响应 |
{
"paragraphs": [
{
"text": "%md This is my new paragraph in my new note",
"dateUpdated": "Jan 8, 2016 4:49:38 PM",
"config": {
"enabled": true
},
"settings": {
"params": {},
"forms": {}
},
"jobName": "paragraph_1452300578795_1196072540",
"id": "20160108-164938_1685162144",
"dateCreated": "Jan 8, 2016 4:49:38 PM",
"status": "READY",
"progressUpdateIntervalMs": 500
}
],
"name": "source note for export",
"id": "2B82H3RR1",
"angularObjects": {},
"config": {},
"info": {}
}
|
导入笔记
| 描述 | 该POST
方法从注释JSON输入中输入一个注释 |
| 网址 | http://[zeppelin-server]:[zeppelin-port]/api/notebook/import
|
| 成功代码 | 201 |
| 失败代码 | 500 |
| 示例JSON输入 |
{
"paragraphs": [
{
"text": "%md This is my new paragraph in my new note",
"dateUpdated": "Jan 8, 2016 4:49:38 PM",
"config": {
"enabled": true
},
"settings": {
"params": {},
"forms": {}
},
"jobName": "paragraph_1452300578795_1196072540",
"id": "20160108-164938_1685162144",
"dateCreated": "Jan 8, 2016 4:49:38 PM",
"status": "READY",
"progressUpdateIntervalMs": 500
}
],
"name": "source note for export",
"id": "2B82H3RR1",
"angularObjects": {},
"config": {},
"info": {}
}
| | 示例JSON响应 |
{
"status": "CREATED",
"message": "",
"body": "2AZPHY918"
}
|
运行所有段落
| 描述 | 此POST
方法运行给定注释id中的所有段落。
如果找不到Note id 404返回。如果解释器有问题返回412错误。 |
| 网址 | http://[zeppelin-server]:[zeppelin-port]/api/notebook/job/[noteId]
|
| 成功代码 | 200 |
| 失败代码 | 404或412 |
| 示例JSON响应 |
{"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响应 |
{"status":"OK"}
|
清除所有段落结果
| 描述 | 此PUT
方法清除给定id的注释的所有段落结果。 |
| 网址 | http://[zeppelin-server]:[zeppelin-port]/api/notebook/[noteId]/clear
|
| 成功代码 | 200 |
| 禁止代码 | 401 |
| 找不到代码 | 404 |
| 失败代码 | 500 |
| 示例JSON响应 |
{"status": "OK"}
|
段落操作
创建一个新的段落
| 描述 | 此POST
方法使用JSON有效载荷创建一个新段落。返回的JSON的body字段包含新的段落ID。 |
| 网址 | http://[zeppelin-server]:[zeppelin-port]/api/notebook/[noteId]/paragraph
|
| 成功代码 | 201 |
| 失败代码 | 500 |
| 示例JSON输入(添加到最后) |
{
"title": "Paragraph insert revised",
"text": "%spark\nprintln(\"Paragraph insert revised\")"
}
| | JSON输入示例(添加到特定索引) |
{
"title": "Paragraph insert revised",
"text": "%spark\nprintln(\"Paragraph insert revised\")",
"index": 0
}
| | 示例JSON响应 |
{
"status": "CREATED",
"message": "",
"body": "20151218-100330_1754029574"
}
|
获取段落信息
| 描述 | 此GET
方法使用给定的id检索现有段落的信息。返回的JSON的body字段包含有关段落的信息。 |
| 网址 | http://[zeppelin-server]:[zeppelin-port]/api/notebook/[noteId]/paragraph/[paragraphId]
|
| 成功代码 | 200 |
| 失败代码 | 500 |
| 示例JSON响应 |
{
"status": "OK",
"message": "",
"body": {
"title": "Paragraph2",
"text": "%spark\n\nprintln(\"it's paragraph2\")",
"dateUpdated": "Dec 18, 2015 7:33:54 AM",
"config": {
"colWidth": 12,
"graph": {
"mode": "table",
"height": 300,
"optionOpen": false,
"keys": [],
"values": [],
"groups": [],
"scatter": {}
},
"enabled": true,
"title": true,
"editorMode": "ace/mode/scala"
},
"settings": {
"params": {},
"forms": {}
},
"jobName": "paragraph_1450391574392_-1890856722",
"id": "20151218-073254_1105602047",
"results": {
"code": "SUCCESS",
"msg": [
{
"type": "TEXT",
"data": "it's paragraph2\n"
}
]
},
"dateCreated": "Dec 18, 2015 7:32:54 AM",
"dateStarted": "Dec 18, 2015 7:33:55 AM",
"dateFinished": "Dec 18, 2015 7:33:55 AM",
"status": "FINISHED",
"progressUpdateIntervalMs": 500
}
}
|
获取单个段落的状态
| 描述 | 该GET
方法通过给定的注释和段落ID获取单个段落的状态。返回的JSON的body字段包含由段落id,段落状态,段落完成日期,段落开始日期组成的数组。 |
| 网址 | http://[zeppelin-server]:[zeppelin-port]/api/notebook/job/[noteId]/[paragraphId]
|
| 成功代码 | 200 |
| 失败代码 | 500 |
| 示例JSON响应 |
{
"status": "OK",
"body": {
"id":"20151121-212654_766735423",
"status":"FINISHED",
"finished":"Tue Nov 24 14:21:40 KST 2015",
"started":"Tue Nov 24 14:21:39 KST 2015"
}
}
|
更新段落配置
| 描述 | 此PUT
方法使用给定的ID更新段落配置,以便用户可以更改段落设置,如图形类型,显示或隐藏编辑器/结果和段落大小等。您可以更新所需的某些字段,例如,colWidth
只能通过发送请求更新字段与有效载荷{"colWidth": 12.0}
。 |
| 网址 | http://[zeppelin-server]:[zeppelin-port]/api/notebook/[noteId]/paragraph/[paragraphId]/config
|
| 成功代码 | 200 |
| 错误请求代码 | 400 |
| 禁止代码 | 403 |
| 找不到代码 | 404 |
| 失败代码 | 500 |
| 示例JSON输入 |
{
"colWidth": 6.0,
"graph": {
"mode": "lineChart",
"height": 200.0,
"optionOpen": false,
"keys": [
{
"name": "age",
"index": 0.0,
"aggr": "sum"
}
],
"values": [
{
"name": "value",
"index": 1.0,
"aggr": "sum"
}
],
"groups": [],
"scatter": {}
},
"editorHide": true,
"editorMode": "ace/mode/markdown",
"tableHide": false
}
| | 示例JSON响应 |
{
"status":"OK",
"message":"",
"body":{
"text":"%sql \nselect age, count(1) value\nfrom bank \nwhere age \u003c 30 \ngroup by age \norder by age",
"config":{
"colWidth":6.0,
"graph":{
"mode":"lineChart",
"height":200.0,
"optionOpen":false,
"keys":[
{
"name":"age",
"index":0.0,
"aggr":"sum"
}
],
"values":[
{
"name":"value",
"index":1.0,
"aggr":"sum"
}
],
"groups":[],
"scatter":{}
},
"tableHide":false,
"editorMode":"ace/mode/markdown",
"editorHide":true
},
"settings":{
"params":{},
"forms":{}
},
"apps":[],
"jobName":"paragraph1423500782552-1439281894",
"id":"20150210-015302_1492795503",
"results":{
"code":"SUCCESS",
"msg": [
{
"type":"TABLE",
"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"
}
]
},
"dateCreated":"Feb 10, 2015 1:53:02 AM",
"dateStarted":"Jul 3, 2015 1:43:17 PM",
"dateFinished":"Jul 3, 2015 1:43:23 PM",
"status":"FINISHED",
"progressUpdateIntervalMs":500
}
}
|
删除一段
| 描述 | 此DELETE
方法通过给定的注释和段落ID删除段落。 |
| 网址 | http://[zeppelin-server]:[zeppelin-port]/api/notebook/[noteId]/paragraph/[paragraphId]
|
| 成功代码 | 200 |
| 失败代码 | 500 |
| 示例JSON响应 |
{"status": "OK","message": ""}
|
异步运行段落
| 描述 | 此POST
方法通过给定的注释和段落ID异步运行段落。即使该段落的执行失败,该API也会始终返回SUCCESS,因为API是异步的 |
| 网址 | http://[zeppelin-server]:[zeppelin-port]/api/notebook/job/[noteId]/[paragraphId]
|
| 成功代码 | 200 |
| 失败代码 | 500 |
| 示例JSON输入(可选,仅当需要更新动态表单的值时才需要) |
{
"name": "name of new note",
"params": {
"formLabel1": "value1",
"formLabel2": "value2"
}
}
| | 示例JSON响应 |
{“status”:“OK”}
|
同步运行段落
| 描述 | 此POST
方法通过给定的注释和段落ID同步运行段落。该API可以根据段执行的结果返回SUCCESS或ERROR |
| 网址 | http://[zeppelin-server]:[zeppelin-port]/api/notebook/run/[noteId]/[paragraphId]
|
| 成功代码 | 200 |
| 失败代码 | 500 |
| 示例JSON输入(可选,仅当需要更新动态表单的值时才需要) |
{
"name": "name of new note",
"params": {
"formLabel1": "value1",
"formLabel2": "value2"
}
}
| | 示例JSON响应 |
{"status": "OK"}
| | 示例JSON错误 |
{
"status": "INTERNAL_SERVER_ERROR",
"body": {
"code": "ERROR",
"type": "TEXT",
"msg": "bash: -c: line 0: unexpected EOF while looking for matching ``'\nbash: -c: line 1: syntax error: unexpected end of file\nExitValue: 2"
}
}
|
停止一段
| 描述 | 该DELETE
方法通过给定的注释和段落ID来停止段落。 |
| 网址 | http://[zeppelin-server]:[zeppelin-port]/api/notebook/job/[noteId]/[paragraphId]
|
| 成功代码 | 200 |
| 失败代码 | 500 |
| 示例JSON响应 |
{"status": "OK"}
|
将段落移动到特定索引
| 描述 | 此POST
方法将一个段落从注释移动到特定的索引(顺序)。 |
| 网址 | http://[zeppelin-server]:[zeppelin-port]/api/notebook/[noteId]/paragraph/[paragraphId]/move/[newIndex]
|
| 成功代码 | 200 |
| 失败代码 | 500 |
| 示例JSON响应 |
{"status": "OK","message": ""}
|
全文搜索所有笔记中的段落
| 描述 | GET
请求将返回匹配段落的列表 |
| 网址 | http://[zeppelin-server]:[zeppelin-port]/api/notebook/search?q=[query]
|
| 成功代码 | 200 |
| 失败代码 | 500 |
| 示例JSON响应 |
{
"status": "OK",
"body": [
{
"id": "/paragraph/",
"name":"Note Name",
"snippet":"",
"text":""
}
]
}
|
Cron工作
添加Cron作业
| 描述 | 此POST
方法将cron作业添加到给定的注释id中。 |
| 网址 | http://[zeppelin-server]:[zeppelin-port]/api/notebook/cron/[noteId]
|
| 成功代码 | 200 |
| 失败代码 | 500 |
| 示例JSON输入 |
{"cron": "cron expression of note"}
| | 示例JSON响应 |
{"status": "OK"}
|
删除Cron作业
| 描述 | 该DELETE
方法通过给定的注释id删除cron作业。 |
| 网址 | http://[zeppelin-server]:[zeppelin-port]/api/notebook/cron/[noteId]
|
| 成功代码 | 200 |
| 失败代码 | 500 |
| 示例JSON响应 |
{"status": "OK"}
|
获得Cron工作
| 描述 | 该GET
方法获取给定注释id的cron作业表达式。返回的JSON的body字段包含cron表达式。 |
| 网址 | http://[zeppelin-server]:[zeppelin-port]/api/notebook/cron/[noteId]
|
| 成功代码 | 200 |
| 失败代码 | 500 |
| 示例JSON响应 |
{"status": "OK", "body": "* * * * * ?"}
|
允许
获取注释权限信息
| 描述 | 此GET
方法获取注释授权信息。 |
| 网址 | http://[zeppelin-server]:[zeppelin-port]/api/notebook/[noteId]/permissions
|
| 成功代码 | 200 |
| 禁止代码 | 403 |
| 失败代码 | 500 |
| 示例JSON响应 |
{
"status":"OK",
"message":"",
"body":{
"readers":[
"user2"
],
"owners":[
"user1"
],
"writers":[
"user2"
]
}
}
|
设置备注权限
| 描述 | 此PUT
方法设置备注授权信息。 |
| 网址 | http://[zeppelin-server]:[zeppelin-port]/api/notebook/[noteId]/permissions
|
| 成功代码 | 200 |
| 禁止代码 | 403 |
| 失败代码 | 500 |
| 示例JSON输入 |
{
"readers": [
"user1"
],
"owners": [
"user2"
],
"writers": [
"user1"
]
}
| | 示例JSON响应 |
{
"status": "OK"
}
|