Я ищу способ запустить ноутбук Zeppelin из другого ноутбука Zeppelin. Подобен % запустить волшебную команду в записной книжке Databricks и примерно эквивалентен команде :load
в spark-shell
REPL или оператору import
в Python.
Он должен дождаться запуска всех включенных абзацев другой записной книжки. Выполнение должно остановиться на первом выполненном абзаце со статусом ошибки. Все переменные, определенные в этой другой записной книжке, должны стать доступными в текущей записной книжке. Он также должен работать в многопользовательском режиме.
Я обнаружил, что следующий пример команды работает, но только в режиме без аутентификации.
%sh
curl >/dev/null -X POST -s \
http://$HOSTNAME:$ZEPPELIN_PORT/api/notebook/job/2DJ4HPCJG && \
curl -s http://$HOSTNAME:$ZEPPELIN_PORT/api/notebook/job/2DJ4HPCJG \
| grep -vq '"status":"ERROR"'
Кроме того, метод ZeppelinContext # runNote () работает в режиме аутентификации, но работает асинхронно. Я не нашел способа обнаружить ошибку и остановить выполнение.
Буду признателен за ваше решение, которое удовлетворяет всем вышеперечисленным требованиям или идеям по решению моих частичных проблем, указанных выше.
Чтобы запустить
ZeppelinContext#runNote()
, о котором упоминал Антонис, просто введитеz.runNote("<noteId>")
, гдеnoteId
можно найти в URL-адресе после ... / notebook /