Через какие движки на HDFS можно работать с файлами как с таблицами?

Ответ

Для работы с файлами в HDFS как с таблицами используются SQL-движки, которые предоставляют реляционную абстракцию поверх данных. Основные из них:

  • Apache Hive: Классический движок для запросов, который транслирует SQL-подобные запросы (HiveQL) в задания MapReduce, Tez или Spark. Использует метаданные (схему таблиц) из Hive Metastore.
  • Apache Spark SQL: Позволяет выполнять SQL-запросы к данным в HDFS (и другим источникам) через DataFrame/Dataset API. Часто используется вместе с Hive Metastore для доступа к структурированным таблицам.
  • Presto (Trino): Высокопроизводительный распределенный SQL-движок для аналитических запросов. Может напрямую запрашивать данные из HDFS в различных форматах (ORC, Parquet, JSON), используя коннекторы.
  • Apache Impala: MPP-движок запросов, оптимизированный для низкой задержки при работе с данными в HDFS (обычно в формате Parquet). Интегрируется с Hive Metastore.

Ключевая идея: Эти движки позволяют выполнять SELECT, JOIN, GROUP BY над файлами в HDFS, как если бы это были таблицы в базе данных, абстрагируясь от физического расположения и формата файлов.

Ответ 18+ 🔞

Ну, представляешь, сидишь ты с этими файлами в HDFS, а они лежат там, как дрова на складе — вроде всё есть, но взять и нормально посчитать нихуя не получается. Так вот, чтобы не ковыряться в них палкой, придумали целую ораву SQL-движков. Это такие хитрожопые прослойки, которые делают вид, будто куча разрозненных файлов — это аккуратные таблички, как в нормальной базе данных.

Вот главные герои этой движухи:

  • Apache Hive: Старый, добрый дед. Берёт твой запрос на своём диалекте (HiveQL) и, не моргнув глазом, превращает его в кучу MapReduce-заданий, которые потом ползают по кластеру, как муравьи. Всё про таблицы знает через свою шпионскую контору — Hive Metastore. Работает, бля, не быстро, но надёжно, как танк.
  • Apache Spark SQL: Это уже не дед, а резвый пацан. Он тоже SQL понимает, но работает через свои штуки — DataFrames. Главный козырь — скорость, ёпта, потому что всё в памяти крутит. Часто стучится к тому же Hive Metastore, чтобы узнать, где что лежит, а потом уже сам всё обрабатывает.
  • Presto (или Trino, как его теперь зовут): Вот это, бля, реактивный истребитель для аналитики. Запросы шпарит с такой скоростью, что волосы дыбом. Ему похуй на формат — Parquet, ORC, JSON — всё схавает. Просто тычешь ему на папку в HDFS, а он уже тебе результат плюёт, даже не вспотев.
  • Apache Impala: Ещё один скоростной ублюдок, который заточен под низкие задержки. Особенно любит, когда данные аккуратно упакованы в Parquet. Тоже дружит с Hive Metastore, чтобы не искать таблицы по всему кластеру.

Суть всей этой ебли, если коротко: вместо того чтобы вручную парсить каждый файл, ты просто пишешь SELECT * FROM sales WHERE profit > 0, а движок сам разбирается, где эти sales лежат, в каком они формате и как их склеить. Получается такая магия — доступ к свалке данных, как к цивилизованной базе. Удобно, чё.