2

也许我误解了打包的目的,但它似乎对创建用于生产部署的工件没有帮助,因为它只打包代码。它忽略了 conf、data 和其他使 kedro 项目可重现的目录。

我知道我可以使用 docker 或气流插件进行部署,但如何部署到数据块。你有什么建议吗?

我正在考虑制作一个可以安装在集群上的轮子,但我需要先打包 conf。另一种选择是将 git 工作区同步到集群并通过笔记本运行 kedro。

关于最佳实践的任何想法?

4

3 回答 3

3

如果您不使用docker并且只是使用 kedro 直接部署在 databricks 集群上。这就是我们将 kedro 部署到数据块的方式。

  1. CI/CD 管道使用kedro package. 创建一个轮子文件。

  2. 上传distconf复制到 dbfs 或 AzureBlob 文件(如果使用 Azure Databricks)

这会将所有内容上传到每个数据块git push

然后,您可以拥有一个笔记本,其中包含以下内容:

  1. 您可以在 databricks 中有一个初始化脚本,例如:
from cargoai import run
from cargoai.pipeline import create_pipeline

branch = dbutils.widgets.get("branch")

conf = run.get_config(
    project_path=f"/dbfs/project_name/build/cicd/{branch}"
)
catalog = run.create_catalog(config=conf)
pipeline = create_pipeline()

在这里conf,catalogpipeline将可用

  1. 当您想master在生产中运行分支或分支时调用此初始化脚本,例如:
    %run "/Projects/InitialSetup/load_pipeline" $branch="master"

  2. 对于开发和测试,您可以运行特定节点
    pipeline = pipeline.only_nodes_with_tags(*tags)

  3. 然后运行完整或部分管道SequentialRunner().run(pipeline, catalog)

在生产中,这个笔记本可以通过数据块进行调度。如果你在 Azure Databricks 上,则可以使用它Azure Data Factory来计划和运行它。

于 2020-01-21T04:33:12.127 回答
0

我发现最好的选择是使用另一个工具来打包、部署和运行作业。将 mlflow 与 kedro 一起使用似乎很合适。我在 Kedro 中完成了大部分工作,但使用 MLFlow 进行打包和作业执行:https ://medium.com/@QuantumBlack/deploying-and-versioning-data-pipelines-at-scale-942b1d81b5f5

name: My Project

conda_env: conda.yaml

entry_points:
  main:
    command: "kedro install && kedro run"

然后运行它:

mlflow 运行 -b databricks -c cluster.json 。-P env="staging" --experiment-name /test/exp

于 2020-03-08T15:27:54.517 回答
0

因此,有一部分文档涉及 Databricks:

https://kedro.readthedocs.io/en/latest/04_user_guide/12_working_with_databricks.html

最简单的入门方法可能是与 git 同步并通过 Databricks 笔记本运行。但是,如前所述,还有其他方法可以使用“.whl”并引用“conf”文件夹。

于 2020-01-20T23:52:02.767 回答