Ймовірно, найкраща альтернатива сховищу CSV: Parquet Data

Apache Parquet надає кілька переваг для зберігання та пошуку даних порівняно з традиційними методами, такими як CSV.

Формат Parquet призначений для більш швидкої обробки даних складних типів. У цій статті ми розповідаємо про те, як формат Parquet підходить для сучасних потреб у даних, що постійно зростають.

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

Що таке сховище CSV?

Ми всі багато чули про CSV (значення, розділені комами) – один із найпоширеніших способів організації та форматування даних. Зберігання даних CSV базується на рядках. Файли CSV зберігаються з розширенням .csv. Ми можемо зберігати та відкривати дані CSV за допомогою Excel, Google Sheets або будь-якого текстового редактора. Дані можна легко переглянути після відкриття файлу.

Що ж, це недобре – точно не для формату бази даних.

Крім того, у міру зростання обсягу даних стає складніше запитувати, керувати та отримувати.

Ось приклад даних, які зберігаються у файлі .CSV:

EmpId,First name,Last name, Division
2012011,Sam,Butcher,IT
2013031,Mike,Johnson,Human Resource
2010052,Bill,Matthew,Architect
2010079,Jose,Brian,IT
2012120,Adam,James,Solutions

Якщо ми переглянемо його в Excel, ми побачимо структуру рядок-стовпець, як показано нижче:

Проблеми зі зберіганням CSV

Сховища на основі рядків, такі як CSV, підходять для операцій створення, оновлення та видалення.

А як щодо Read in CRUD?

Уявіть собі мільйон рядків у наведеному вище файлі .csv. Відкриття файлу та пошук потрібних даних займе певний час. Не так круто. Більшість хмарних провайдерів, таких як AWS, стягують з компаній плату залежно від обсягу сканованих або збережених даних – знову ж таки, файли CSV займають багато місця.

  Надсилайте програми з Chrome для встановлення на вашому iPhone

Сховище CSV не має ексклюзивної опції для зберігання метаданих, що робить сканування даних виснажливим завданням.

Отже, яке економічно ефективне та оптимальне рішення для виконання всіх операцій CRUD? Давайте досліджувати.

Що таке зберігання даних Parquet?

Паркет це формат зберігання даних з відкритим кодом. Він широко використовується в екосистемах Hadoop і Spark. Файли Parquet зберігаються з розширенням .parquet.

Паркет – високоструктурований формат. Його також можна використовувати для оптимізації складних необроблених даних, які масово присутні в озерах даних. Це може значно скоротити час запиту.

Parquet робить зберігання даних ефективнішим, а пошук – швидшим завдяки поєднанню рядкових і стовпцевих (гібридних) форматів зберігання. У цьому форматі дані розділені як горизонтально, так і вертикально. Формат Parquet також значною мірою усуває накладні витрати на розбір.

Формат обмежує загальну кількість операцій вводу/виводу та, зрештою, вартість.

Parquet також зберігає метадані, які зберігають інформацію про дані, як-от схема даних, кількість значень, розташування стовпців, мінімальне значення, максимальне значення, кількість груп рядків, тип кодування тощо. Метадані зберігаються на різних рівнях у файлі , що робить доступ до даних швидшим.

У доступі на основі рядків, як-от CSV, пошук даних потребує часу, оскільки запит має переходити по кожному рядку та отримувати значення певних стовпців. Завдяки Parquet storage можна отримати доступ до всіх необхідних колон одночасно.

Підсумовуючи,

  • Паркет заснований на стовпчастій конструкції для зберігання даних
  • Це оптимізований формат даних для масового зберігання складних даних у системах зберігання
  • Формат Parquet включає різні методи стиснення та кодування даних
  • Це значно скорочує час сканування даних і запитів і займає менше місця на диску порівняно з іншими форматами зберігання, такими як CSV
  • Мінімізує кількість операцій вводу-виводу, знижуючи вартість зберігання та виконання запитів
  • Включає метадані, які полегшують пошук даних
  • Надає підтримку з відкритим кодом
  Як змінити мову в WeChat

Формат даних паркету

Перш ніж перейти до прикладу, давайте детальніше розберемося, як зберігаються дані у форматі Parquet:

Ми можемо мати кілька горизонтальних розділів, відомих як групи рядків, в одному файлі. У кожній групі рядків застосовується вертикальне поділ. Стовпці розділені на кілька блоків стовпців. Дані зберігаються як сторінки всередині блоків стовпців. Кожна сторінка містить закодовані значення даних і метадані. Як ми згадували раніше, метадані для всього файлу також зберігаються в нижньому колонтитулі файлу на рівні групи рядків.

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

Parquet нативно підтримує стиснення даних за допомогою стиснення сторінок і методів кодування словника. Розглянемо простий приклад стиснення словника:

Зауважте, що у наведеному вище прикладі ми бачимо розділ IT 4 рази. Таким чином, під час зберігання в словнику формат кодує дані за допомогою іншого значення, яке легко зберігати (0,1,2…) разом із кількістю безперервних повторень – IT, IT змінюється на 0,2, щоб зберегти більше місця. Запит стиснутих даних займає менше часу.

Пряме порівняння

Тепер, коли ми маємо ясне уявлення про те, як виглядають формати CSV і Parquet, настав час статистичних даних для порівняння обох форматів:

  Наскільки ваш Apple Watch водонепроникний?

CSV
Паркет
Формат зберігання на основі рядків.
Гібрид форматів зберігання на основі рядків і стовпців.
Це займає багато місця, оскільки параметр стиснення за замовчуванням недоступний. Наприклад, файл розміром 1 ТБ займатиме стільки ж місця, якщо зберігатиметься в Amazon S3 або будь-якій іншій хмарі.
Стискає дані під час зберігання, таким чином споживаючи менше місця. Файл розміром 1 ТБ, збережений у форматі Parquet, займе лише 130 ГБ місця.
Час виконання запиту повільний через пошук на основі рядків. Для кожного стовпця потрібно отримати кожен рядок даних.
Час запиту приблизно в 34 рази швидший через зберігання на основі стовпців і наявність метаданих.
Для кожного запиту потрібно сканувати більше даних.
Приблизно на 99% менше даних сканується для виконання запиту, таким чином оптимізуючи продуктивність.
Більшість запам’ятовуючих пристроїв сплачується залежно від обсягу пам’яті, тому формат CSV означає високу вартість зберігання.
Менша вартість зберігання, оскільки дані зберігаються в стисненому закодованому форматі.
Схему файлу потрібно або вивести (що призводить до помилок), або надати (нудно).
Схема файлу зберігається в метаданих.
Формат підходить для простих типів даних.
Parquet підходить навіть для складних типів, таких як вкладені схеми, масиви, словники.

Висновок 👩‍💻

На прикладах ми переконалися, що Parquet ефективніший за CSV з точки зору вартості, гнучкості та продуктивності. Це ефективний механізм для зберігання та отримання даних, особливо коли весь світ рухається до хмарного зберігання та оптимізації простору. Усі основні платформи, такі як Azure, AWS і BigQuery, підтримують формат Parquet.