Развертывание Kedro для блоков данных - PullRequest
1 голос
/ 20 января 2020

Может быть, я неправильно понимаю назначение упаковки, но, похоже, это не помогает при создании артефакта для промышленного развертывания, потому что он только упаковывает код. Он не учитывает каталоги conf, data и другие, которые делают проект kedro воспроизводимым.

Я понимаю, что могу использовать docker или плагины воздушного потока для развертывания, но как насчет развертывания в блоках данных. У вас есть какой-нибудь совет здесь?

Я думал о создании колеса, которое можно было бы установить на кластере, но мне нужно было сначала упаковать conf. Другой вариант - просто синхронизировать c git рабочее пространство с кластером и запускать kedro через ноутбук.

Есть какие-нибудь мысли по поводу лучшей практики?

Ответы [ 3 ]

3 голосов
/ 21 января 2020

Если вы не используете docker и просто используете kedro для развертывания непосредственно в кластере блоков данных. Вот как мы внедряем kedro в блоки данных.

  1. CI / CD строит конвейер с использованием kedro package. Создает файл колеса.

  2. Загрузка dist и conf в dbfs или копию файла AzureBlob (при использовании Azure Databricks)

Это будет загружать все в блоки данных на каждом git push

Тогда вы можете иметь блокнот со следующим:

  1. Вы можете иметь скрипт инициализации в кирпичах данных, например:
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"

Для разработки и тестирования вы можете запустить определенные c узлы pipeline = pipeline.only_nodes_with_tags(*tags)

Затем запустите полный или частичный конвейер, набрав всего лишь SequentialRunner().run(pipeline, catalog)

В производстве этот ноутбук можно запланировать с помощью блоков данных , Если вы используете Azure Databricks, вы можете использовать Azure Data Factory, чтобы запланировать и запустить это.

0 голосов
/ 08 марта 2020

Я обнаружил, что лучшим вариантом было просто использовать другой инструмент для упаковки, развертывания и запуска задания. Использование mlflow с kedro кажется хорошим решением. Я делаю почти все в Kedro, но использую MLFlow для упаковки и выполнения работ: https://medium.com/@QuantumBlack / развертывание и версионирование-data-pipelines-at-scale-942b1d81b5f5

name: My Project

conda_env: conda.yaml

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

Затем запустите его с:

mlflow run -b databricks - c cluster. json. -P env = "staging" - имя эксперимента / test / exp

0 голосов
/ 21 января 2020

Таким образом, есть раздел документации, который имеет дело с блоками данных:

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

Самый простой способ начать - это, вероятно, синхронизировать c с git и запустить через блокнот Databricks. Однако, как уже упоминалось, существуют другие способы использования «.whl» и обращения к папке «conf».

...