Рубрики
Без рубрики

Инкрементные версионные наборы данных в Kedro

Кедро версиологированные наборы данных могут быть смешаны с дополнительными и разделенными наборами наборах, чтобы сделать некоторые временения … Помечено с кедом, Python.

Кедро версию наборов данных можно смешивать с дополнительными и разделенными наборами наборах для выполнения анализа некоторых временных времен на наше набонное набору данных со временем. KEDRO – это очень расширяемая и компонентная структура, что позволяет нам создавать решения от отдельных компонентов, которые он обеспечивает. Эта статья является отличным примером того, как вы можете объединить эти компоненты уникальными способами добиться некоторых мощных результатов с очень мало работы.

Как наш набор данных изменяется со временем ??

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

Чтобы включить это все, что нам нужно было сделать сейчас, было добавить Версии: правда И мы сможем сравнивать результаты с течением времени. Да, Kedro делает это так просто настроить.

🤷♀️. Что такое Kedro (части)

Уокер Уокер · 24-20 · 3 мин прочитан

Установить проект

Настройте новый проект так же, как обычно. Примечание Мне нравится использовать PIPX для глобальных пакетов CLI. Вы можете выбрать конкретную версию KEDRO или выбирать последние, одновременно все глобально устанавливающие Kedro и запустите Kedro New, чисто зависят от в последний раз, когда вы решили обновить Kedro.

pip install pipx
pipx run kedro new

cd versioned-partitioned-kedro-example
conda create -n versioned-partitioned-kedro-example python=3.8  -y
conda activate versioned-partitioned-kedro-example

pip install kedro
kedro install

git init
git add .
git commit -m "init project from pipx run kedro new"

Я позвонил в мой проект, версимый-распределенный-кедро-пример. Вы можете назвать ваш проект, все, что вам нравится. Если вы попытаетесь использовать некоторые специальные символы, где они не принадлежат, KEDRO поймает вас. Под капотом KEDRO использует Библиотека под названием печенье

⚠️ Пожалуйста, не пропустите использование виртуальной среды. Вы можете использовать в зависимости от того, какой инструмент виртуальной среды вы предпочитаете, но, пожалуйста, не пропускайте. Разрушение бегущего проекта для обучения не весело.

Обновлять зависимости

Я выскочил свои зависимости, добавил Kedro [Pandas] и Find-Kedro Отказ Так как это дополнительные пакеты, наш пример потребуется.

aiohttp
black==21.5b1
find-kedro
flake8>=3.7.9, <4.0
ipython
isort~=5.0
jupyter_client>=5.1, <7.0
jupyterlab~=3.0
jupyter~=1.0
kedro-telemetry~=0.1.0
kedro==0.17.4
kedro[pandas]
nbstripout~=0.4
pytest-cov~=2.5
pytest-mock>=1.7.1, <2.0
pytest~=6.2
requests
wheel>=0.35, <0.37

Примечание Я создал Find-Kedro И мне нравится использовать его, чтобы создать свой объект трубопровода. Подумайте, как Pteest автоматически поднимает все имени Тест , Find-Kedro делает то же самое для кедро. Это все поднимает узел или трубопровод Во имя и создает трубопроводы из этого.

Установите новые зависимости

После добавления дополнительных зависимостей к Требования. В Мы можем сказать Kedro установить все и компилировать зависимости. За кулисами --build-reqs использует библиотеку под названием Компиляция PIP создать требования .txt Файл с жесткими закрепленными зависимостями, который идеально подходит для создания воспроизводимых проектов. Вы и ваши будущие коллеги могут не поблагодарить вас за это, но они уверены, что, как к чему не будет проклинать ваше имя, когда они не могут Получите проект для бега.

kedro install --build-reqs

git add .
git commit -m "added additional dependencies"

Создать узел

Для этого примера нам нужен узел, чтобы сделать много. Этот узел будет пройти cars.csv от URL до Паркет файл. Я собираюсь использовать лямбда, чтобы построить мою функцию личности встроенной.

# pipelines/cars_nodes.py

from kedro.pipeline import node

nodes = []

nodes.append(
        node(
            func=lambda x:x,
            inputs='raw_cars',
            outputs='int_cars',
            name='create_int_cars',
            )
        )

🗒️. Примечание Find-Kedro 'автоматически заберет эти узлы для нас после того, как мы создали наши Pipely_registry.py`.

башмак Git Add. Git Commit -M “Добавить Create_int_cars Узел”

Реализуйте Find-Kedro

Далее нам нужно рассказать Kedro, где наши узлы. Это где Find-Kedro приходит в. Как только мы указываем на каталог, где наши модули узлов/трубопроводов он создает словарь трубопроводов для нас автоматически. Он даже отделяет каждый модуль в трубопровод и прошивает их все в один конвейер по умолчанию.

` питон

«« Проектные трубопроводы ».« »От набора набора импорта Dict из пути импорта PATHLIB

от Kedro.Pipine Import Properial

От Find_kedro Import Find_kedro

def registre_pipelines () -> DICK [ул, трубопровод]: «« Зарегистрируйте трубопроводы проекта.

Returns:
    A mapping from a pipeline name to a "Pipeline "object.
"""
pipeline_dir = Path(__file__).parent / 'pipelines'
return find_kedro(directory= pipeline_dir)

`

🗒️. Это очень похоже на по умолчанию `Pipeline_registry’except в последние две строки.

git add .
git commit -m "implement find-kedro"

Создать базовый каталог

Как только у нас есть настройка трубопровода, KEDRO CLI может автоматически заполнить отсутствующие записи каталога с помощью MemoryDataset . Таким образом, использование CLI помогает постоянно лежать в каталоге и убедитесь, что мы не заканчиваем опечатку в нашем названии набора данных.

kedro catalog create --pipeline cars_nodes

KEDRO выгнал следующий файл каталога на База/каталог/cars_nodes.yml Для нас, чтобы начать с.

raw_cars:
  type: MemoryDataSet
int_cars:
  type: MemoryDataSet

🔥 Используйте KEDRO CLI для заполнения любых пропущенных наборов данных из автоматически каталога.

сделать версию набора данных

Кедро лебедка MemoryDataset для нас. Мы преобразуем их в соответствующий тип набора данных и включите версию для нашего int Слой, который является первой точкой, которую мы сохраняем в нашей среде.

raw_cars:
  type: pandas.CSVDataSet
  filepath: https://waylonwalker.com/cars.csv
int_cars:
  type: pandas.ParquetDataSet
  filepath: data/int_cars.parquet
  versioned: true

Совершить ваши изменения в каталог.

git add .
git commit -m "create catalog"

запускать трубопровод

После того, как у нас есть узлы и настройки каталога, мы можем запускать трубопровод несколько раз, чтобы получить некоторые версительные данные. Каждый раз, когда мы бежим, он сохранит новую версию внутри int_cars.parque каталог.

kedro run
kedro run
kedro run
kedro run
kedro run

🗒️ Мы поместим наши данные в каталог данных. По умолчанию этот каталог включен в .gitignore И не будет забрать Git.

Осмотрите данные

Перечисление файлов в data/int_cars.parque Показывает, что у меня сейчас есть пять различных наборов данных. Я могу загрузить старые, но по умолчанию Kedro загрузит последний.

ls data/int_cars.parquet

2021-07-05T15.24.53.164Z
2021-07-05T15.29.56.144Z
2021-07-05T15.30.23.101Z
2021-07-05T15.30.26.555Z
2021-07-05T15.31.12.688Z

🗒️ Kedro Устанавливает версию в Timestamp, что сеанс начинается. Все наборы данных, созданные в одном и том же прогоне, будут иметь ту же версию.

Стек на инкрементном наборе данных

Вот где все интересны. KEDRO поставляется с инкрементным набором данных, который загрузит все файлы из определенного каталога в словарь, где клавиши являются именем файла набора данных. Загрузить все наборы наборов данных в Этот словарь все, что нам нужно сделать, это добавить новую запись каталога, которая является Тип: PartitionedDataset , с путь указывая на то же место, что и оригинал, а набор данных введите то же самое, что и оригинал.

int_cars_partitioned:
  type: PartitionedDataSet
  dataset: pandas.ParquetDataSet
  path: data/int_cars.parquet

Список каталога

Перечисление записей каталога подтверждает, что мы успешно добавили наши новые PartitionedDataset Отказ

In [17]: context.catalog.list()
Out[17]:
['raw_cars',
 'int_cars',
 'int_cars_partitioned',
 'parameters']

Загрузка дополнительного набора данных

Теперь мы можем легко загрузить наборы данных из каждого прогона, которую мы просто сделали в одном словаре, просто бегаем context.catalog.load ('int_cars_incremental') .

In [19]: context.catalog.load('int_cars_incremental')
2021-07-05 11:32:40,534 - kedro.io.data_catalog - INFO - Loading data from `int_cars_incremental` (IncrementalDataSet)...
Out[19]:
{'2021-07-05T15.29.56.144Z/int_cars.parquet':              Unnamed: 0   mpg  cyl   disp   hp  drat     wt   qsec  vs  am  gear  carb
 0             Mazda RX4  21.0    6  160.0  110  3.90  2.620  16.46   0   1     4     4
 1         Mazda RX4 Wag  21.0    6  160.0  110  3.90  2.875  17.02   0   1     4     4
 2            Datsun 710  22.8    4  108.0   93  3.85  2.320  18.61   1   1     4     1
 3        Hornet 4 Drive  21.4    6  258.0  110  3.08  3.215  19.44   1   0     3     1
 4     Hornet Sportabout  18.7    8  360.0  175  3.15  3.440  17.02   0   0     3     2
 5               Valiant  18.1    6  225.0  105  2.76  3.460  20.22   1   0     3     1
 6            Duster 360  14.3    8  360.0  245  3.21  3.570  15.84   0   0     3     4
 7             Merc 240D  24.4    4  146.7   62  3.69  3.190  20.00   1   0     4     2
 8              Merc 230  22.8    4  140.8   95  3.92  3.150  22.90   1   0     4     2
 9              Merc 280  19.2    6  167.6  123  3.92  3.440  18.30   1   0     4     4
 10            Merc 280C  17.8    6  167.6  123  3.92  3.440  18.90   1   0     4     4
 11           Merc 450SE  16.4    8  275.8  180  3.07  4.070  17.40   0   0     3     3
 12           Merc 450SL  17.3    8  275.8  180  3.07  3.730  17.60   0   0     3     3
 13          Merc 450SLC  15.2    8  275.8  180  3.07  3.780  18.00   0   0     3     3
 14   Cadillac Fleetwood  10.4    8  472.0  205  2.93  5.250  17.98   0   0     3     4
 15  Lincoln Continental  10.4    8  460.0  215  3.00  5.424  17.82   0   0     3     4
 16    Chrysler Imperial  14.7    8  440.0  230  3.23  5.345  17.42   0   0     3     4
 17             Fiat 128  32.4    4   78.7   66  4.08  2.200  19.47   1   1     4     1
 18          Honda Civic  30.4    4   75.7   52  4.93  1.615  18.52   1   1     4     2
 19       Toyota Corolla  33.9    4   71.1   65  4.22  1.835  19.90   1   1     4     1
 20        Toyota Corona  21.5    4  120.1   97  3.70  2.465  20.01   1   0     3     1
 21     Dodge Challenger  15.5    8  318.0  150  2.76  3.520  16.87   0   0     3     2
 22          AMC Javelin  15.2    8  304.0  150  3.15  3.435  17.30   0   0     3     2
 23           Camaro Z28  13.3    8  350.0  245  3.73  3.840  15.41   0   0     3     4
 24     Pontiac Firebird  19.2    8  400.0  175  3.08  3.845  17.05   0   0     3     2
 25            Fiat X1-9  27.3    4   79.0   66  4.08  1.935  18.90   1   1     4     1
 26        Porsche 914-2  26.0    4  120.3   91  4.43  2.140  16.70   0   1     5     2
 27         Lotus Europa  30.4    4   95.1  113  3.77  1.513  16.90   1   1     5     2
 28       Ford Pantera L  15.8    8  351.0  264  4.22  3.170  14.50   0   1     5     4
 29         Ferrari Dino  19.7    6  145.0  175  3.62  2.770  15.50   0   1     5     6
 30        Maserati Bora  15.0    8  301.0  335  3.54  3.570  14.60   0   1     5     8
 31           Volvo 142E  21.4    4  121.0  109  4.11  2.780  18.60   1   1     4     2,
 '2021-07-05T15.30.23.101Z/int_cars.parquet':              Unnamed: 0   mpg  cyl   disp   hp  drat     wt   qsec  vs  am  gear  carb
 0             Mazda RX4  21.0    6  160.0  110  3.90  2.620  16.46   0   1     4     4
 1         Mazda RX4 Wag  21.0    6  160.0  110  3.90  2.875  17.02   0   1     4     4
 2            Datsun 710  22.8    4  108.0   93  3.85  2.320  18.61   1   1     4     1
 3        Hornet 4 Drive  21.4    6  258.0  110  3.08  3.215  19.44   1   0     3     1
 4     Hornet Sportabout  18.7    8  360.0  175  3.15  3.440  17.02   0   0     3     2
 5               Valiant  18.1    6  225.0  105  2.76  3.460  20.22   1   0     3     1
 6            Duster 360  14.3    8  360.0  245  3.21  3.570  15.84   0   0     3     4
 7             Merc 240D  24.4    4  146.7   62  3.69  3.190  20.00   1   0     4     2
 8              Merc 230  22.8    4  140.8   95  3.92  3.150  22.90   1   0     4     2
 9              Merc 280  19.2    6  167.6  123  3.92  3.440  18.30   1   0     4     4
 10            Merc 280C  17.8    6  167.6  123  3.92  3.440  18.90   1   0     4     4
 11           Merc 450SE  16.4    8  275.8  180  3.07  4.070  17.40   0   0     3     3
 12           Merc 450SL  17.3    8  275.8  180  3.07  3.730  17.60   0   0     3     3
 13          Merc 450SLC  15.2    8  275.8  180  3.07  3.780  18.00   0   0     3     3
 14   Cadillac Fleetwood  10.4    8  472.0  205  2.93  5.250  17.98   0   0     3     4
 15  Lincoln Continental  10.4    8  460.0  215  3.00  5.424  17.82   0   0     3     4
 16    Chrysler Imperial  14.7    8  440.0  230  3.23  5.345  17.42   0   0     3     4
 17             Fiat 128  32.4    4   78.7   66  4.08  2.200  19.47   1   1     4     1
 18          Honda Civic  30.4    4   75.7   52  4.93  1.615  18.52   1   1     4     2
 19       Toyota Corolla  33.9    4   71.1   65  4.22  1.835  19.90   1   1     4     1
 20        Toyota Corona  21.5    4  120.1   97  3.70  2.465  20.01   1   0     3     1
 21     Dodge Challenger  15.5    8  318.0  150  2.76  3.520  16.87   0   0     3     2
 22          AMC Javelin  15.2    8  304.0  150  3.15  3.435  17.30   0   0     3     2
 23           Camaro Z28  13.3    8  350.0  245  3.73  3.840  15.41   0   0     3     4
 24     Pontiac Firebird  19.2    8  400.0  175  3.08  3.845  17.05   0   0     3     2
 25            Fiat X1-9  27.3    4   79.0   66  4.08  1.935  18.90   1   1     4     1
 26        Porsche 914-2  26.0    4  120.3   91  4.43  2.140  16.70   0   1     5     2
 27         Lotus Europa  30.4    4   95.1  113  3.77  1.513  16.90   1   1     5     2
 28       Ford Pantera L  15.8    8  351.0  264  4.22  3.170  14.50   0   1     5     4
 29         Ferrari Dino  19.7    6  145.0  175  3.62  2.770  15.50   0   1     5     6
 30        Maserati Bora  15.0    8  301.0  335  3.54  3.570  14.60   0   1     5     8
 31           Volvo 142E  21.4    4  121.0  109  4.11  2.780  18.60   1   1     4     2,
 '2021-07-05T15.30.26.555Z/int_cars.parquet':              Unnamed: 0   mpg  cyl   disp   hp  drat     wt   qsec  vs  am  gear  carb
 0             Mazda RX4  21.0    6  160.0  110  3.90  2.620  16.46   0   1     4     4
 1         Mazda RX4 Wag  21.0    6  160.0  110  3.90  2.875  17.02   0   1     4     4
 2            Datsun 710  22.8    4  108.0   93  3.85  2.320  18.61   1   1     4     1
 3        Hornet 4 Drive  21.4    6  258.0  110  3.08  3.215  19.44   1   0     3     1
 4     Hornet Sportabout  18.7    8  360.0  175  3.15  3.440  17.02   0   0     3     2
 5               Valiant  18.1    6  225.0  105  2.76  3.460  20.22   1   0     3     1
 6            Duster 360  14.3    8  360.0  245  3.21  3.570  15.84   0   0     3     4
 7             Merc 240D  24.4    4  146.7   62  3.69  3.190  20.00   1   0     4     2
 8              Merc 230  22.8    4  140.8   95  3.92  3.150  22.90   1   0     4     2
 9              Merc 280  19.2    6  167.6  123  3.92  3.440  18.30   1   0     4     4
 10            Merc 280C  17.8    6  167.6  123  3.92  3.440  18.90   1   0     4     4
 11           Merc 450SE  16.4    8  275.8  180  3.07  4.070  17.40   0   0     3     3
 12           Merc 450SL  17.3    8  275.8  180  3.07  3.730  17.60   0   0     3     3
 13          Merc 450SLC  15.2    8  275.8  180  3.07  3.780  18.00   0   0     3     3
 14   Cadillac Fleetwood  10.4    8  472.0  205  2.93  5.250  17.98   0   0     3     4
 15  Lincoln Continental  10.4    8  460.0  215  3.00  5.424  17.82   0   0     3     4
 16    Chrysler Imperial  14.7    8  440.0  230  3.23  5.345  17.42   0   0     3     4
 17             Fiat 128  32.4    4   78.7   66  4.08  2.200  19.47   1   1     4     1
 18          Honda Civic  30.4    4   75.7   52  4.93  1.615  18.52   1   1     4     2
 19       Toyota Corolla  33.9    4   71.1   65  4.22  1.835  19.90   1   1     4     1
 20        Toyota Corona  21.5    4  120.1   97  3.70  2.465  20.01   1   0     3     1
 21     Dodge Challenger  15.5    8  318.0  150  2.76  3.520  16.87   0   0     3     2
 22          AMC Javelin  15.2    8  304.0  150  3.15  3.435  17.30   0   0     3     2
 23           Camaro Z28  13.3    8  350.0  245  3.73  3.840  15.41   0   0     3     4
 24     Pontiac Firebird  19.2    8  400.0  175  3.08  3.845  17.05   0   0     3     2
 25            Fiat X1-9  27.3    4   79.0   66  4.08  1.935  18.90   1   1     4     1
 26        Porsche 914-2  26.0    4  120.3   91  4.43  2.140  16.70   0   1     5     2
 27         Lotus Europa  30.4    4   95.1  113  3.77  1.513  16.90   1   1     5     2
 28       Ford Pantera L  15.8    8  351.0  264  4.22  3.170  14.50   0   1     5     4
 29         Ferrari Dino  19.7    6  145.0  175  3.62  2.770  15.50   0   1     5     6
 30        Maserati Bora  15.0    8  301.0  335  3.54  3.570  14.60   0   1     5     8
 31           Volvo 142E  21.4    4  121.0  109  4.11  2.780  18.60   1   1     4     2,
 '2021-07-05T15.31.12.688Z/int_cars.parquet':              Unnamed: 0   mpg  cyl   disp   hp  drat     wt   qsec  vs  am  gear  carb
 0             Mazda RX4  21.0    6  160.0  110  3.90  2.620  16.46   0   1     4     4
 1         Mazda RX4 Wag  21.0    6  160.0  110  3.90  2.875  17.02   0   1     4     4
 2            Datsun 710  22.8    4  108.0   93  3.85  2.320  18.61   1   1     4     1
 3        Hornet 4 Drive  21.4    6  258.0  110  3.08  3.215  19.44   1   0     3     1
 4     Hornet Sportabout  18.7    8  360.0  175  3.15  3.440  17.02   0   0     3     2
 5               Valiant  18.1    6  225.0  105  2.76  3.460  20.22   1   0     3     1
 6            Duster 360  14.3    8  360.0  245  3.21  3.570  15.84   0   0     3     4
 7             Merc 240D  24.4    4  146.7   62  3.69  3.190  20.00   1   0     4     2
 8              Merc 230  22.8    4  140.8   95  3.92  3.150  22.90   1   0     4     2
 9              Merc 280  19.2    6  167.6  123  3.92  3.440  18.30   1   0     4     4
 10            Merc 280C  17.8    6  167.6  123  3.92  3.440  18.90   1   0     4     4
 11           Merc 450SE  16.4    8  275.8  180  3.07  4.070  17.40   0   0     3     3
 12           Merc 450SL  17.3    8  275.8  180  3.07  3.730  17.60   0   0     3     3
 13          Merc 450SLC  15.2    8  275.8  180  3.07  3.780  18.00   0   0     3     3
 14   Cadillac Fleetwood  10.4    8  472.0  205  2.93  5.250  17.98   0   0     3     4
 15  Lincoln Continental  10.4    8  460.0  215  3.00  5.424  17.82   0   0     3     4
 16    Chrysler Imperial  14.7    8  440.0  230  3.23  5.345  17.42   0   0     3     4
 17             Fiat 128  32.4    4   78.7   66  4.08  2.200  19.47   1   1     4     1
 18          Honda Civic  30.4    4   75.7   52  4.93  1.615  18.52   1   1     4     2
 19       Toyota Corolla  33.9    4   71.1   65  4.22  1.835  19.90   1   1     4     1
 20        Toyota Corona  21.5    4  120.1   97  3.70  2.465  20.01   1   0     3     1
 21     Dodge Challenger  15.5    8  318.0  150  2.76  3.520  16.87   0   0     3     2
 22          AMC Javelin  15.2    8  304.0  150  3.15  3.435  17.30   0   0     3     2
 23           Camaro Z28  13.3    8  350.0  245  3.73  3.840  15.41   0   0     3     4
 24     Pontiac Firebird  19.2    8  400.0  175  3.08  3.845  17.05   0   0     3     2
 25            Fiat X1-9  27.3    4   79.0   66  4.08  1.935  18.90   1   1     4     1
 26        Porsche 914-2  26.0    4  120.3   91  4.43  2.140  16.70   0   1     5     2
 27         Lotus Europa  30.4    4   95.1  113  3.77  1.513  16.90   1   1     5     2
 28       Ford Pantera L  15.8    8  351.0  264  4.22  3.170  14.50   0   1     5     4
 29         Ferrari Dino  19.7    6  145.0  175  3.62  2.770  15.50   0   1     5     6
 30        Maserati Bora  15.0    8  301.0  335  3.54  3.570  14.60   0   1     5     8
 31           Volvo 142E  21.4    4  121.0  109  4.11  2.780  18.60   1   1     4     2}

👆 Обратите внимание, что постепенные наборы набора данных загружаются для вас, его дикт Путь файла: набор данных

Стек на разделенном наборе данных

Давайте посмотрим на похожий тип набора данных PartitionedDataset Отказ Мы можем добавить его в каталог очень похожий путь к тому, как мы добавили Инкрементный набор данных Отказ

int_cars_incremental:
  type: IncrementalDataSet
  dataset: pandas.ParquetDataSet
  path: data/int_cars.parquet

Загрузка разделенного набора данных

Обратите внимание, что мы получаем Dict с одинаковыми клавишами, что и раньше, но на этот раз ценности являются функцией нагрузки, а не загруженные данные. Разделенные наборы данных могут быть полезны, если вы работаете на наборах данных, которые занимают больше памяти, чем у вас есть. В нашем случае сочетания это с версиями набора данных, его вероятно, чтобы расти довольно большими, поэтому PartitionedDataset скорее всего, лучший вариант для этого использования.

In [18]: context.catalog.load('int_cars_partitioned')
2021-07-05 11:31:11,253 - kedro.io.data_catalog - INFO - Loading data from `int_cars_partitioned` (PartitionedDataSet)...
Out[18]:
{'2021-07-05T15.29.56.144Z/int_cars.parquet': >,
 '2021-07-05T15.30.23.101Z/int_cars.parquet': >,
 '2021-07-05T15.30.26.555Z/int_cars.parquet': >,
 '2021-07-05T15.31.12.688Z/int_cars.parquet': >}

Инкрементал против распределения

УвеличитьДататасет и PartitionedDataset S очень похожи, поскольку они дают вам доступ к целую каталогу данных, которые используют тот же базовый погрузчик набора данных. Значительная разница состоит в том, хотите ли вы, чтобы ваши данные предварительно загружали или если вы хотите загрузить и распоряжаться его, как вы повторяете его.

  • Инкрементные нагрузки нагрузки
  • распределенные дают функцию нагрузки

Создание узлов с разделенными наборами наборах

Давайте создадим узел с этим PartitionedDataset Собирать статистику на нашем наборе данных со временем. Этот узел делает понимание диктов, чтобы получить длину каждой версии, которую мы вытащили.

def timeseries_partitioned(cars: Dict):
    return {k:len(car()) for k, car in cars.items()}

nodes.append(
        node(
            func=timeseries_partitioned,
            inputs='int_cars_partitioned',
            outputs='int_cars_timeseries_partitioned',
            name='create_int_cars_timeseries_partitioned',
            )
        )

🗒️ Обратите внимание, что внутри автомобиля понимания DICT – это функция нагрузки, которую нам нужно позвонить.

Создание узлов с инкрементными наборами набора данных

Делать тот же узел с нашими УвеличитьДататасет Выглядит очень похоже, за исключением того времени, за исключением того времени, заряжена данные внутри понимания Dict, а не функция, которую нам нужно позвонить.

def timeseries_incremental(cars: Dict):
    return {k:len(car) for k, car in cars.items()}

nodes.append(
        node(
            func=timeseries_incremental,
            inputs='int_cars_incremental',
            outputs='int_cars_timeseries_incremental',
            name='create_int_cars_timeseries_incremental',
            )
        )

Дополнительные записи каталога

После добавления этих узлов мы можем снова добавить записи каталога с помощью командной строки. Это не перезаписывает любую из наборов данных, которые мы только что создали. Это только добавят к нему.

kedro catalog create --pipeline cars_nodes
int_cars_timeseries_partitioned:
  type: MemoryDataSet
int_cars_timeseries_incremental:
  type: MemoryDataSet
int_cars_timeseries_partitioned:
  type: pickle.PickleDataSet
  filepath: data/int_cars_timeseries_partitioned.parquet
int_cars_timeseries_incremental:
  type: pickle.PickleDataSet
  filepath: data/int_cars_timeseries_incremental.parquet

Загрузка новых наборов данных

Загрузка двух наборов данных, которые мы только что создали, показывают, что у нас есть одинаковый результат, используя как инкрементные, так и разделенные наборы данных. Этот результат представляет собой словарь FilePaths сопоставлен на размер набора данных. Поскольку файлы по умолчанию являются временными метками, мы могли бы начать выполнять анализ некоторых временных серий, чтобы увидеть, как наш набор данных меняется со временем.

In [32]: context.catalog.load('int_cars_timeseries_incremental')
2021-07-05 12:00:55,014 - kedro.io.data_catalog - INFO - Loading data from `int_cars_timeseries_incremental` (PickleDataSet)...
Out[32]:
{'2021-07-05T15.29.56.144Z/int_cars.parquet': 32,
 '2021-07-05T15.30.23.101Z/int_cars.parquet': 32,
 '2021-07-05T15.30.26.555Z/int_cars.parquet': 32,
 '2021-07-05T15.31.12.688Z/int_cars.parquet': 32,
 '2021-07-05T16.43.43.088Z/int_cars.parquet': 32}

In [33]: context.catalog.load('int_cars_timeseries_partitioned')
2021-07-05 12:01:03,223 - kedro.io.data_catalog - INFO - Loading data from `int_cars_timeseries_partitioned` (PickleDataSet)...
Out[33]:
{'2021-07-05T15.29.56.144Z/int_cars.parquet': 32,
 '2021-07-05T15.30.23.101Z/int_cars.parquet': 32,
 '2021-07-05T15.30.26.555Z/int_cars.parquet': 32,
 '2021-07-05T15.31.12.688Z/int_cars.parquet': 32,
 '2021-07-05T16.43.43.088Z/int_cars.parquet': 32,
 '2021-07-05T16.50.46.686Z/int_cars.parquet': 32}

📄 KEDRO – Мои данные не столик

Waylon Walker · 15 января · 2 мин читать

☝️. У меня есть полная статья о создании наборов данных, которые не являются табличными набором данных, используя сортировку.

Этот пост был в первую очередь построен на https://twitch.tv/waylonwalker Дайте мне следующую и присоединитесь к живуще, если это то, что вас интересует.

Оригинал: “https://dev.to/waylonwalker/incremental-versioned-datasets-in-kedro-3ajn”