如何从命令行(自动)运行Zeppelin Notebook

tho*_*med 5 apache-zeppelin

  1. 我们如何从命令行运行笔记本?

  2. 除了1,我如何将命令行参数传递到笔记本中?从笔记本代码中访问命令行参数?

sam*_*est 5

因此,我遇到了同样的问题,并设法找出如何使用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}
Run Code Online (Sandbox Code Playgroud)

如果有人手动单击了“解释器”绑定的“保存”按钮,则仅需要最后一个命令。

更新:

好的,我认为您可以循环以检查正在运行的笔记本的状态以确定笔记本是否失败,请参阅: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
Run Code Online (Sandbox Code Playgroud)

  • 您只是写了一个答案然后重新写了一个问题以匹配您的答案吗? (2认同)