Чтение и запись паркетного файла

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.

а) Чтение файла

В узле Чтение файла выполняется следующее:

  1. Подключаются необходимые библиотеки для работы с данными и чтения файлов формата Parquet.
  2. Из входной переменной извлекается ссылка на выбранный Parquet-файл.
  3. Файл читается с использованием библиотеки pyarrow.parquet, и его содержимое преобразуется в объект pandas.DataFrame.
  4. На основе этого DataFrame формируется выходная таблица.
б) Запись файла

В узле Запись файла выполняются следующие действия:

  1. Подключаются необходимые библиотеки для работы с данными и записью файлов формата Parquet.
  2. Из входных переменных извлекаются путь к папке назначения (link_output_folder) и имя файла (single_file_name), куда будет сохранён результат.
  3. Входные данные преобразуются в объект pandas.DataFrame.
  4. Создаётся объект типа pyarrow.Table на основе DataFrame.
  5. Таблица сохраняется в формате Parquet в указанную папку с применением сжатия gzip.

3. Чтение и запись нескольких файлов

В подмодели Чтение и запись нескольких файлов происходит чтение нескольких файлов из папки Data и их запись в папку Output.

а) Чтение паркетных файлов

В узле Чтение паркетных файлов выполняется следующее:

  1. Подключаются необходимые библиотеки для работы с данными и чтения файлов формата Parquet.
  2. Из входной переменной извлекается путь к папке, содержащей файлы Parquet.
  3. Создается объект ParquetDataset, который представляет собой набор Parquet-файлов в указанной папке.
  4. Содержимое всех файлов набора считывается методом .read() и преобразуется в объект pandas.DataFrame.
  5. На основе полученного DataFrame создается выходная таблица.
б) Запись паркетных файлов

На узел Запись паркетных файлов подается переменная row_size_sample из п.1, которая накладывает ограничение на количество строк при записи Parquet-файла - 1 000.

Код выполняет следующие действия:

  1. Подключает необходимые библиотеки для работы с данными и записью файлов формата Parquet.
  2. Преобразует первую входную таблицу в объект pandas.DataFrame.
  3. Из входных переменных извлекает путь к папке назначения (link_output_folder), указанное количество строк в одном файле (row_size_sample) и имя файла (single_file_name).
  4. Делит исходный DataFrame на фрагменты размером row_size_sample строк.
  5. Для каждого фрагмента создаёт объект типа 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).