【问题标题】:Running a kedro pipeline with inputs and outputs defined through the command line使用通过命令行定义的输入和输出运行 kedro 管道
【发布时间】:2021-09-10 09:04:11
【问题描述】:

我想使用不同的输入运行 kedro 管道并将结果保存在输出文件夹中,其中输入路径和输出路径通过命令行提供

我播种了使用 kedro.config.TemplatedConfigLoader 将新变量传递给 jinja2 模板目录的可能性,但这样我只能手动定义挂钩中的 globals_dict 变量,如 kedro 文档中所示。

理想情况下,我想运行这样的东西:

kedro run --pipeline="my_pipeline" --input="path_to_input_1" --output="path_to_output_1"
kedro run --pipeline="my_pipeline" --input="path_to_input_2" --output="path_to_output_2"

有这样的目录:


input_df:
  type: pandas.CSVDataSet
  filepath: "${ input_path }"
  load_args:
    sep: "\t"
    index_col: 0
  save_args:
    index: True
    encoding: "utf-8"

output_df:
  type: pandas.CSVDataSet
  filepath: "${ output_path }"
  load_args:
    sep: "\t"
    index_col: 0
  save_args:
    index: True
    encoding: "utf-8"

并分析正确​​的输入并将结果存储在正确的输出路径中。

实现它的 kedro 方法是什么?

【问题讨论】:

    标签: command-line kedro


    【解决方案1】:

    所以默认情况下这是不可用的。您可以尝试使用 kedro 的几个部分来完成这项工作:

    • 编辑 cli.py 以提供新的 Click 参数
    • 尝试使用 before_dataset_loaded 挂钩将参数添加到 globals.yml 字典,TemplatedConfigLoader 用于字符串插值

    话虽如此,也许运行环境可能对此有所帮助?

    https://kedro.readthedocs.io/en/latest/04_kedro_project_setup/02_configuration.html#additional-configuration-environments

    一般来说,我们建议不要使用静态时难以阅读的动态管道。我们确实鼓励人们保持目录明确,以便在 6 个月内阅读。

    【讨论】:

    • 感谢您的回答!你的意思是我可以使用 before_dataset_loaded 来拦截我在 cli.py 中定义并通过命令行传递的命令行参数?顺便提一句。我了解动态目录的问题(在我的情况下,管道将具有固定结构)和可重现性,因此能够保存渲染的 jinja2 目录,这样如果有人想要重现它,他/她就会有使用保存的目录运行管道。
    • 因此您必须定义自己的项目级 CLI 命令 - 或者可能覆盖现有的 run 命令。这是一个有趣的问题 - 我建议你在我们的 Discord 服务器 (discord.gg/akJDeVaxnB) 上提出这个问题,我们可以在下周一起解决这个问题!
    • 完美,我在 Discord 中发布了问题!谢谢!
    • 这也是我迫切需要的。我有多个数据集都通过同一个管道。并且为每个数据集配置一个管道不仅仅是令人筋疲力尽。有什么新东西可以解决这个问题吗?
    • 所以@kerfuffle 我认为您正在寻找这个kedro.readthedocs.io/en/stable/09_development/… 但总的来说,请加入我们的 Discord,我们可以在那里为您提供更好的支持 :)
    猜你喜欢
    • 2013-01-22
    • 1970-01-01
    • 2018-08-18
    • 2020-03-11
    • 1970-01-01
    • 1970-01-01
    • 2013-06-10
    • 1970-01-01
    • 2010-11-28
    相关资源
    最近更新 更多