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 определяет порядок, в котором выполняются узлы:
- Кедро сначала выполняет return_greeting_node. Это выполняет return_greeting, который не получает ввода, но производит строку «Hello».
- Выходная строка сохраняется в MemoryDataSet под названием my_salutation. Затем Кедро выполняет второй узел, join_statements_node.
- Это загружает набор данных my_salutation и вставляет его в функцию join_statements.
- Функция объединяет входящее приветствие с «Кедро!» для формирования выходной строки «Hello Kedro!»
- Выходные данные конвейера возвращаются в словаре с ключом 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, его компонентов и некоторых интересных интеграций. Что вы думаете? Вы им пользовались?
# Спасибо за чтение! :)