Чтение и запись паркетного файла
Loginom имеет широкий функционал для решения многих задач. Однако некоторые алгоритмы пока не реализованы в Loginom в качестве стандартных компонентов. В таких случаях в сценарии используются встроенные языки программирования.
Один из поддерживаемых языков программирования в Loginom — Python, который часто используется для анализа данных.
В этом примере показано, как с помощью Python можно прочитать и записать файл в формате Parquet. Parquet — формат файлов экосистемы Hadoop, который хранит вложенные структуры данных в плоском столбчатом формате.
Чтобы сократить объем занимаемой памяти в демопримере применяются файлы небольшого размера. В процессе реальной работы размер файлов может быть любым.
Для работы узла Python может потребоваться предварительная настройка Loginom и установка Python. В демопримере используются библиотеки pandas, numpy и pyrrow. Использование Python в Loginom имеет ограничения.
Примечание: Демопример имеет ограничение демонстрации всех возможностей при запуске на демостенде (Запустить демо). Рекомендуем установить пример локально.
Описание алгоритма
1. Настройка переменных
В сценарии используется предопределённая переменная PackageFilePath
из порта Переменные пакета, которая содержит путь к файлу пакета. Эта переменная подается на узел Настройка переменных.
В узле Настройка переменных задаются значения переменных, которые затем используются в последующих узлах Python для выполнения кода.
Имя | Метка | Значение |
---|---|---|
link_single_file |
Ссылка на файл в папке Data | Concat(PackageFilePath,"Data/","ADA.parquet") |
link_input_folder |
Ссылка на папку Data | Concat(PackageFilePath,"Data/") |
link_output_folder |
Ссылка на папку Output | Concat(PackageFilePath,"Output/") |
row_size_sample |
Количество строк в выборке | 1000 |
single_file_name |
Имя файла | "test" |
Папки Data
и Output
приведены в качестве примера. Пользователь может использовать свои папки, но тогда нужно будет внести изменения в сценарий.
2. Чтение и запись одного файла
В подмодели Чтение и запись одного файла происходит чтение одного Parquet-файла из папки Data
и его запись в папку Output
.
В узле Чтение файла выполняется следующее:
- Подключаются необходимые библиотеки для работы с данными и чтения файлов формата Parquet.
- Из входной переменной извлекается ссылка на выбранный Parquet-файл.
- Файл читается с использованием библиотеки
pyarrow.parquet
, и его содержимое преобразуется в объектpandas.DataFrame
. - На основе этого DataFrame формируется выходная таблица.
В узле Запись файла выполняются следующие действия:
- Подключаются необходимые библиотеки для работы с данными и записью файлов формата Parquet.
- Из входных переменных извлекаются путь к папке назначения (
link_output_folder
) и имя файла (single_file_name
), куда будет сохранён результат. - Входные данные преобразуются в объект
pandas.DataFrame
. - Создаётся объект типа
pyarrow.Table
на основе DataFrame. - Таблица сохраняется в формате Parquet в указанную папку с применением сжатия gzip.
3. Чтение и запись нескольких файлов
В подмодели Чтение и запись нескольких файлов происходит чтение нескольких файлов из папки Data
и их запись в папку Output
.
В узле Чтение паркетных файлов выполняется следующее:
- Подключаются необходимые библиотеки для работы с данными и чтения файлов формата Parquet.
- Из входной переменной извлекается путь к папке, содержащей файлы Parquet.
- Создается объект
ParquetDataset
, который представляет собой набор Parquet-файлов в указанной папке. - Содержимое всех файлов набора считывается методом .read() и преобразуется в объект
pandas.DataFrame
. - На основе полученного DataFrame создается выходная таблица.
На узел Запись паркетных файлов подается переменная row_size_sample
из п.1, которая накладывает ограничение на количество строк при записи Parquet-файла - 1 000.
Код выполняет следующие действия:
- Подключает необходимые библиотеки для работы с данными и записью файлов формата Parquet.
- Преобразует первую входную таблицу в объект
pandas.DataFrame
. - Из входных переменных извлекает путь к папке назначения (
link_output_folder
), указанное количество строк в одном файле (row_size_sample
) и имя файла (single_file_name
). - Делит исходный DataFrame на фрагменты размером
row_size_sample
строк. - Для каждого фрагмента создаёт объект типа
pyarrow.Table
и сохраняет его в отдельный файл формата Parquet в указанной папке, добавляя порядковый номер к имени файла.
Настройки узлов Python
Во всех узлах Python включены флаги:
Разрешить формировать выходные столбцы из кода - при включенном флаге доступно динамическое создание, изменение и удаление выходных столбцов.
Запускать в отдельном процессе - запускается скрипт отдельном процессе (в Процессе интерпретатора).
Не рекомендуется запускать одновременно подмодели: Чтение и запись одного файла и Чтение и запись нескольких файлов, поскольку в этом случае файлы будут перезаписаны в папке Output
.
Скачайте и откройте файл в Loginom. При необходимости Loginom CE можно скачать бесплатно
Минимальные требования к системе:
- Операционная система: Windows 10 и выше
- CPU x64: 2 core 1
- Оперативная память: 4 GB
- Жесткий диск: 10 GB
1 Поддерживается работа на x64 процессорах Intel Core, AMD FX и более новых, содержащих инструкции SSE4.2 (POPCNT, LZCNT).