Как преобразовать файлы CSV и журналов в столбчатый формат — CloudSavvy IT

Изображение героя AWS Glue

Столбчатые форматы, такие как Apache Parquet, обеспечивают значительную экономию на сжатии и их намного проще сканировать, обрабатывать и анализировать, чем другие форматы, такие как CSV. В этой статье мы покажем вам, как преобразовать данные CSV в Parquet с помощью AWS Glue.

Что такое столбчатый формат?

Файлы CSV, файлы журналов и любые другие файлы с разделителями-символами эффективно хранят данные в столбцах. Каждая строка данных содержит определенное количество столбцов, разделенных разделителем, например запятыми или пробелами. Но под капотом эти форматы по-прежнему представляют собой просто строки строк. Нет простого способа сканировать только один столбец файла CSV.

Это может быть проблемой для таких сервисов, как AWS Athena, которые могут выполнять SQL-запросы к данным, хранящимся в CSV и других файлах с разделителями. Даже если вы запрашиваете только один столбец, Афина должна сканировать все содержимое файла. Единственная плата Athena — это гигабайт обработанных данных, поэтому оплачивать счет за счет обработки ненужных данных — не лучшая идея.

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

Поскольку Athena нужно сканировать только один столбец, чтобы выполнить выбор по столбцу, это резко снижает затраты, особенно для больших наборов данных. Если у вас есть 10 столбцов в каждом файле и вы сканируете только один, это означает 90% -ную экономию средств только после перехода на Parquet.

Автоматическое преобразование с помощью AWS Glue

AWS Glue — это инструмент от Amazon, который преобразует наборы данных между форматами. В основном он используется как часть конвейера для обработки данных, хранящихся в форматах с разделителями и других форматах, и вводит их в базы данных для использования в Athena. Хотя его можно настроить как автоматический, вы также можете запустить его вручную, а после небольшой настройки его можно использовать для преобразования файлов CSV в формат Parquet.

Перейдите в консоль AWS Glue и выберите «Начать». На боковой панели нажмите «Добавить поискового робота» и создайте новый поисковый робот. Сканер настроен на поиск данных из Ковши S3, и импортируйте данные в базу данных для использования при преобразовании.

Создание краулера.

Дайте своему сканеру имя и выберите импорт данных из хранилища данных. Выберите S3 (хотя DynamoDB — другой вариант) и введите путь к папке, содержащей ваши файлы. Если у вас есть только один файл, который вы хотите преобразовать, поместите его в отдельную папку.

Выбор хранилища данных для импорта данных в ваш поисковый робот.

Затем вас попросят создать роль IAM, от имени которой будет работать ваш поисковый робот. Создайте роль, затем выберите ее из списка. Возможно, вам придется нажать кнопку обновления рядом с ним, чтобы он появился.

Выбор и роль IAM для вашего краулера.

Выберите базу данных, в которую искатель будет выводить данные; Если вы использовали Athena раньше, вы можете использовать свою собственную базу данных, но если она не используется по умолчанию, она должна работать нормально.

Настройка выходной базы данных вашего сканера.

Если вы хотите автоматизировать процесс, вы можете дать своему сканеру расписание, чтобы он запускался на регулярной основе. Если нет, выберите ручной режим и выполните его самостоятельно с консоли.

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

Файлы, импортированные с правильной схемой.

Как только ваши данные окажутся в системе AWS, вы можете их преобразовать. В Glue Console перейдите на вкладку «Задания» и создайте новое задание. Дайте ему имя, добавьте свою роль IAM и выберите «Предлагаемый сценарий, созданный AWS Glue» в качестве выполняемого задания.

Назовите новую вакансию, добавьте роль IAM и выберите

Выберите свою таблицу на следующем экране, затем выберите «Изменить схему», чтобы указать, что это задание выполняет преобразование.

выберите

Затем вы должны выбрать «Создать таблицы в вашей цели данных», указать Parquet в качестве формата и ввести новый целевой путь. Убедитесь, что это пустое место без других файлов.

Выберите цель данных, выбрав

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

Редактирование схемы вашего файла.

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

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

В противном случае нажмите «Выполнить», и ваш скрипт должен запуститься. Обработка может занять минуту или две, но вы должны увидеть статус на информационной панели. Когда это будет сделано, вы увидите новый файл, созданный в S3.

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

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован.