Kedro: лучший фреймворк Python для науки о данных !!

Kedro: Python Framework для науки о данных!

Эта публикация представляет собой краткое изложение с некоторыми примерами Python Kedro Framework с открытым исходным кодом, созданным Quantumblack, широко используемым для кодирования на Python воспроизводимым, устойчивым и модульным способом для создания «пакетных» конвейеров с несколькими «шагами».
Эта структура становится все более популярной и принимается сообществом, особенно когда необходимо создать «коврик» для последовательного выполнения с различными шагами; этот факт произошел в основном при разработке кодов, ориентированных на науку о данных, из-за простоты использования вместе кода Python, богатой документации, а также из-за того, что они чрезвычайно просты и интуитивно понятны.





Установка:

Использование PIP:

pip install kedro

Использование Anaconda:

conda install -c conda-forge kedro

Элементы Кедро:

  • "Узел:"

«Это оболочка для функции Python, которая называет входы и выходы этой функции», то есть; это блок кода, который может управлять выполнением определенной последовательности кодов или даже других блоков.

# importing the library
from kedro.pipeline import node
# Preparing the first "node"
def return_greeting():
    return "Hello"
#defining the node that will return
return_greeting_node = node(func=return_greeting, inputs=None, outputs="my_salutation")
  • "Трубопровод:"

«Конвейер организует зависимости и порядок выполнения набора узлов и соединяет входы и выходы, поддерживая свой модульный код. Конвейер определяет порядок выполнения узла путем разрешения зависимостей и не обязательно выполняет узлы в том порядке, в котором они передаются. ”

#importing the library
from kedro.pipeline import Pipeline
# Assigning "nodes" to "pipeline"
pipeline = Pipeline([return_greeting_node, join_statements_node])

«DataCatalog - это концепция Kedro. Это запись всех источников данных, которые может использовать проект. Он отображает имена входов и выходов узлов как ключи в DataSet, который является классом Kedro, который может быть специализирован для различных типов хранения данных. Kedro использует MemoryDataSet для данных, которые просто хранятся в памяти. ”

#importing the library
from kedro.io import DataCatalog, MemoryDataSet
# Preparing the "data catalog"
data_catalog = DataCatalog({"my_salutation": MemoryDataSet()})

Бегун - это объект, который запускает конвейер. Kedro определяет порядок, в котором выполняются узлы:

  1. Кедро сначала выполняет return_greeting_node. Это выполняет return_greeting, который не получает ввода, но производит строку «Hello».
  2. Выходная строка сохраняется в MemoryDataSet под названием my_salutation. Затем Кедро выполняет второй узел, join_statements_node.
  3. Это загружает набор данных my_salutation и вставляет его в функцию join_statements.
  4. Функция объединяет входящее приветствие с «Кедро!» для формирования выходной строки «Hello Kedro!»
  5. Выходные данные конвейера возвращаются в словаре с ключом my_message.

Пример: « hello_kedro.py »

"""Contents of the hello_kedro.py file"""
from kedro.io import DataCatalog, MemoryDataSet
from kedro.pipeline import node, Pipeline
from kedro.runner import SequentialRunner
# Prepare the "data catalog"
data_catalog = DataCatalog({"my_salutation": MemoryDataSet()})
# Prepare the first "node"
def return_greeting():
    return "Hello"return_greeting_node = node(return_greeting, inputs=None, outputs="my_salutation")
# Prepare the second "node"
def join_statements(greeting):
    return f"{greeting} Kedro!"join_statements_node = node(
    join_statements, inputs="my_salutation", outputs="my_message"
)
# Assign "nodes" to a "pipeline"
pipeline = Pipeline([return_greeting_node, join_statements_node])
# Create a "runner" to run the "pipeline"
runner = SequentialRunner()
# Execute a pipeline
print(runner.run(pipeline, data_catalog))

Чтобы выполнить приведенный выше код, просто используйте команду ниже в терминале:

python hello_kedro.py

На консоли появится следующее сообщение:

{‘my_message’: ‘Hello Kedro!’}

Другой способ визуализировать выполнение конвейеров в kedro - использовать плагин kedro-viz:

Чтобы узнать больше, посетите:



Удачных интеграций:
Помимо простоты использования с Python, kedro имеет некоторые возможности интеграции с другими инструментами, решениями и средами, некоторые из которых:

  • Кедро + Воздушный поток:

Используя Astronomer, можно развернуть и управлять конвейером kedro с помощью Apache Airflow, как если бы они были DAG:





  • Кедро + Префект

Мы также смогли развернуть конвейер Kedro и управлять им в среде Prefect Core:



  • Kedro + Google Cloud DataProc:

Мы смогли использовать kedro в Google Cloud Dataproc:



  • Kedro + AWS BATCH:

Для развертывания в среде AWS мы можем использовать AWS Batch:



  • Kedro + Amazon SageMaker:

Kedro можно интегрировать с Amazon SageMaker:



  • Кедро + PySpark:

С помощью Kedro мы можем упростить конфигурации развертывания конвейеров с помощью Apache Spark через PySpark для централизации конфигураций Spark, таких как использование памяти, управление разделами и контекстами Spark и даже то, где заполнять заполненные фреймы данных:



  • Кедро + Датабрики:

Можно легко развернуть конвейер Kedro и использовать его в кластере Databricks:



  • kedro + Argo Рабочие процессы:

У нас есть возможность выполнить автоматическое развертывание в контейнерной среде, такой как Red Hat Openshift, Kubernetes и многих других, с использованием рабочих процессов Argo:



  • kedro + Kubeflow:

Для развертывания в контейнерных средах у нас также есть возможность использовать интеграцию с kubeflow:



Эта публикация была кратким описанием Kedro, его компонентов и некоторых интересных интеграций. Что вы думаете? Вы им пользовались?

# Спасибо за чтение! :)