也许我误解了打包的目的,但它似乎对创建用于生产部署的工件没有帮助,因为它只打包代码。它忽略了 conf、data 和其他使 kedro 项目可重现的目录。
我知道我可以使用 docker 或气流插件进行部署,但如何部署到数据块。你有什么建议吗?
我正在考虑制作一个可以安装在集群上的轮子,但我需要先打包 conf。另一种选择是将 git 工作区同步到集群并通过笔记本运行 kedro。
关于最佳实践的任何想法?
也许我误解了打包的目的,但它似乎对创建用于生产部署的工件没有帮助,因为它只打包代码。它忽略了 conf、data 和其他使 kedro 项目可重现的目录。
我知道我可以使用 docker 或气流插件进行部署,但如何部署到数据块。你有什么建议吗?
我正在考虑制作一个可以安装在集群上的轮子,但我需要先打包 conf。另一种选择是将 git 工作区同步到集群并通过笔记本运行 kedro。
关于最佳实践的任何想法?
如果您不使用docker
并且只是使用 kedro 直接部署在 databricks 集群上。这就是我们将 kedro 部署到数据块的方式。
CI/CD 管道使用kedro package
. 创建一个轮子文件。
上传dist
并conf
复制到 dbfs 或 AzureBlob 文件(如果使用 Azure Databricks)
这会将所有内容上传到每个数据块git push
然后,您可以拥有一个笔记本,其中包含以下内容:
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
,catalog
和pipeline
将可用
当您想master
在生产中运行分支或分支时调用此初始化脚本,例如:%run "/Projects/InitialSetup/load_pipeline" $branch="master"
对于开发和测试,您可以运行特定节点pipeline = pipeline.only_nodes_with_tags(*tags)
然后运行完整或部分管道SequentialRunner().run(pipeline, catalog)
在生产中,这个笔记本可以通过数据块进行调度。如果你在 Azure Databricks 上,则可以使用它Azure Data Factory
来计划和运行它。
我发现最好的选择是使用另一个工具来打包、部署和运行作业。将 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
因此,有一部分文档涉及 Databricks:
https://kedro.readthedocs.io/en/latest/04_user_guide/12_working_with_databricks.html
最简单的入门方法可能是与 git 同步并通过 Databricks 笔记本运行。但是,如前所述,还有其他方法可以使用“.whl”并引用“conf”文件夹。