2016-03-28 62 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