如何在气流中运行Jupyter Notebook

Ica*_*rus 2 jupyter airflow

我的代码以jupyter编写,并保存为.ipynb格式。

我们要使用气流来安排执行时间并定义依赖项。

如何在气流中执行笔记本?

我知道我可以先将它们转换为python文件,但是动态生成的图形将很难处理。

有没有更简单的解决方案?谢谢

Luk*_*bel 9

您也可以使用气流 + 造纸厂的组合。

造纸厂

Papermill 是一个带参数运行 jupyter notebook 的工具:https : //github.com/nteract/papermill 运行 jupyter notebook 非常简单,你可以通过 python 脚本来实现:

import papermill as pm

pm.execute_notebook(
   'path/to/input.ipynb',
   'path/to/output.ipynb',
   parameters = dict(alpha=0.6, ratio=0.1)
)
Run Code Online (Sandbox Code Playgroud)

或来自 CLI:

$ papermill local/input.ipynb s3://bkt/output.ipynb -p alpha 0.6 -p l1_ratio 0.1
Run Code Online (Sandbox Code Playgroud)

它将从输入路径运行一个笔记本,在输出路径中创建一个副本,并在每个单元格运行后更新此副本。

气流集成

要将其与 Airflow 集成,有一个专门的纸厂操作符来运行参数化笔记本:https : //airflow.readthedocs.io/en/latest/howto/operator/papermill.html 您可以直接设置相同的输入/输出/参数参数在 DAG 定义中,并为 aifrlow 变量使用模板:

run_this = PapermillOperator(
    task_id="run_example_notebook",
    dag=dag,
    input_nb="/tmp/hello_world.ipynb",
    output_nb="/tmp/out-{{ execution_date }}.ipynb",
    parameters={"msgs": "Ran from Airflow at {{ execution_date }}!"}
)
Run Code Online (Sandbox Code Playgroud)


Ica*_*rus 5

我们之前曾遇到此问题,并花了很多天的时间来解决它。我们将其打包为docker文件并发布在github https://github.com/michaelchanwahyan/datalab上

通过修改开源软件包nbparameterize并集成传递的参数(例如execution_date)来完成此操作。即时生成的图形也可以更新并保存在笔记本内部。

执行时

  1. 笔记本将被读取并注入参数
  2. 笔记本被执行,输出将覆盖原始路径

此外,它还安装并配置了常用工具,例如spark,keras,tensorflow等。