Zeppelin 0.10.1版本Notebook定时调度方法咨询
实现Zeppelin 0.10.1定时运行Notebook的方案
方案一:系统级定时任务(推荐,稳定可靠)
利用Linux的cron结合Zeppelin REST API,每20分钟触发一次Notebook执行:
获取Notebook ID
打开要定时运行的Notebook,地址栏末尾的字符串即为ID(例如2FRGJ5Z1Z)。编写执行脚本
创建一个shell脚本(比如run_zeppelin_notebook.sh),内容如下:
#!/bin/bash # 替换成你的Zeppelin地址和端口 ZEPPELIN_ADDR="http://127.0.0.1:8080" # 替换成你的Notebook ID NOTEBOOK_ID="你的笔记本ID" # 调用API执行整个Notebook # 如果Zeppelin开启了基础认证,添加 -u 用户名:密码 curl -X POST "${ZEPPELIN_ADDR}/api/notebook/job/${NOTEBOOK_ID}"
- 赋予脚本执行权限
chmod +x run_zeppelin_notebook.sh
- 配置cron定时任务
执行crontab -e编辑定时任务,添加以下内容(每20分钟执行一次,日志输出到指定文件):
*/20 * * * * /home/xxx/run_zeppelin_notebook.sh >> /var/log/zeppelin_cron.log 2>&1
保存退出后,cron会自动生效。
方案二:Notebook内循环执行(临时应急,不推荐长期使用)
如果不想依赖系统cron,可以在Notebook中添加一个代码段落(比如Python或Scala),循环执行指定SQL段落:
以Python为例:
import time # 替换成你要执行的4个SQL段落的ID(段落ID可在段落右上角菜单中查看) sql_paragraph_ids = ["段落ID1", "段落ID2", "段落ID3", "段落ID4"] while True: for para_id in sql_paragraph_ids: # 执行指定段落 z.run(para_id) # 等待20分钟 time.sleep(20 * 60)
注意:这个段落需要保持持续运行状态,一旦Zeppelin重启或段落停止,定时任务就会失效,且长期运行会占用Zeppelin资源。
内容的提问来源于stack exchange,提问作者Sheel Malde
相关产品推荐
相关产品推荐

