2016-03-28 105 views

回答

1

所以我有同样的问题,并设法解决如何使用API​​来运行使用curl的笔记本。至于传入命令行参数,认为根本没有办法做到这一点 - 你将不得不在服务器上使用某种共享状态(例如让笔记本从文件中读取并修改文件)。

无论如何,这是我如何设法运行一个笔记本,它假定安装了jq。漂亮参与:(

curl -XGET http://${ip}:8080/api/interpreter/setting | jq '.body[] | .id' 

interpreter_settings_ids=`curl -XGET http://${ip}:8080/api/interpreter/setting | jq '.body[] | .id'` 

id_array="["`echo ${interpreter_settings_ids} | tr ' ' ','`"]" 

curl -XPUT -d $id_array http://${ip}:8080/api/notebook/interpreter/bind/${notebook_id} 

curl -XPOST http://${ip}:8080/api/notebook/job/${notebook_id} 

如果有人手动点击“保存”按钮,然后解释绑定只需要一个命令

更新:

OK我想你可以循环到探测正在运行的笔记本电脑的状态,以确定如果笔记本失败,请参见:https://github.com/eBay/Zeppelin/blob/master/docs/rest-api/rest-notebook.md

例如

function job_success { 
    num_cells=`curl -XGET http://${ip}:8080/api/notebook/job/${notebook_id} 2>/dev/null | jq '.body[] | .status' | wc -l` 
    num_successes=`curl -XGET http://${ip}:8080/api/notebook/job/${notebook_id} 2>/dev/null | jq '.body[] | .status' | grep FINISHED | wc -l` 
    test ${num_cells} = ${num_successes} 
} 

function job_fail { 
    curl -XGET http://${ip}:8080/api/notebook/job/${notebook_id} 2>/dev/null | jq '.body[] | .status' | grep ERROR 
} 

until job_success || job_fail 
do 
    sleep 10 
done 
+1

你刚刚写了一个答案,然后重新写问题来匹配你的答案? –

+0

@LightnessRacesinOrbit不,您可以查看历史记录,以查看问题在语义上保持一致,但对于Google更容易。我其实希望有人提出更好的答案。 – samthebest

+0

@LightnessRacesinOrbit语义是相同的,我用较少的词语表达了更高雅的意义 - 它在客观上更好且实质上等价。但是,我可能会超越帖子的“精神”,但我不知道这意味着什么。给我一个“精神”的定义。 – samthebest