【问题标题】:How to run jupyter notebook in airflow如何在气流中运行 jupyter notebook
【发布时间】:2018-07-28 17:38:48
【问题描述】:

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

我们想使用气流来安排执行并定义依赖关系。

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

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

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

【问题讨论】:

    标签: jupyter airflow


    【解决方案1】:

    您也可以使用airflow + papermill的组合。

    造纸厂

    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)
    )
    

    或来自 CLI:

    $ papermill local/input.ipynb s3://bkt/output.ipynb -p alpha 0.6 -p l1_ratio 0.1
    

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

    气流集成​​

    为了将它与 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 }}!"}
    )
    

    【讨论】:

      【解决方案2】:

      我们之前遇到过这个问题,花了好几天才解决。 我们将其打包为 docker 文件并发布在 github 上https://github.com/michaelchanwahyan/datalab。

      这是通过修改一个开源包nbparameterize并集成传递的参数来完成的,例如execution_date。动态生成的图表也可以在笔记本中更新和保存。

      什么时候执行

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

      此外,它还安装和配置了spark、keras、tensorflow等常用工具。

      【讨论】:

        【解决方案3】:

        另一种选择是使用 Ploomner(免责声明:我是作者)。它在引擎盖下使用造纸厂来构建多级管道。任务可以是笔记本、脚本、函数或它们的任意组合。您可以在本地运行、Airflow 或 Kubernetes(使用 Argo 工作流程)。

        这是管道声明的样子:

        tasks:
          - source: notebook.ipynb
            product:
              nb: output.html
              data: output.csv
        
          - source: another.ipynb
            product:
              nb: another.html
              data: another.csv
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-08-30
          • 1970-01-01
          • 2021-04-04
          • 2022-01-11
          • 2020-10-23
          • 1970-01-01
          • 2018-12-02
          相关资源
          最近更新 更多