Как создать внешнюю таблицу Hive для данных HDFS

HadoopHadoopBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом руководстве вы узнаете, как создать внешнюю таблицу Hive для доступа к данным, хранящимся в Распределенной файловой системе Hadoop (HDFS). Вы научитесь настраивать внешнюю таблицу и выполнять запросы к данным в ней, что обеспечит беспрепятственный способ работы с данными Hadoop с использованием интерфейса Hive SQL.

Введение в Hive и HDFS

Что такое Hive?

Hive представляет собой инфраструктуру хранилища данных, построенную поверх Hadoop, которая предоставляет интерфейс, похожий на SQL, для запросов и управления данными, хранящимися в Распределенной файловой системе Hadoop (HDFS). Пользователи могут писать запросы на языке, похожем на SQL, называемом HiveQL, которые затем преобразуются в задания MapReduce, которые могут выполняться на кластере Hadoop.

Что такое HDFS?

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

Интеграция Hive и HDFS

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

graph TD A[Hive] --> B[HiveQL] B --> C[MapReduce] C --> D[HDFS]

Применение Hive и HDFS

Hive и HDFS обычно используются в следующих сценариях:

  • Анализ больших данных: Hive и HDFS используются для хранения и анализа больших наборов данных, таких как веб-логи, данные с сенсоров и данные социальных сетей.
  • Дата-warehousing: Hive предоставляет интерфейс, похожий на SQL, для запросов и управления данными, хранящимися в HDFS, что делает его популярным выбором для создания хранилищ данных.
  • Пакетная обработка: Hive можно использовать для пакетной обработки данных, хранящихся в HDFS, например, для генерации отчетов, выполнения операций ETL (Извлечение, Преобразование, Загрузка) и запуска алгоритмов машинного обучения.

Создание внешней таблицы Hive

Понимание внешних таблиц Hive

В Hive внешняя таблица - это таблица, которая ссылается на данные, хранящиеся в внешнем месте, например, в HDFS. В отличие от внутренних таблиц, которые хранят данные в метахранилище Hive, внешние таблицы просто предоставляют способ доступа к данным, хранящимся в другом месте.

Создание внешней таблицы Hive

Для создания внешней таблицы Hive можно использовать следующий SQL-запрос:

CREATE EXTERNAL TABLE IF NOT EXISTS table_name (
  col1 data_type,
  col2 data_type,
  ...
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE
LOCATION '/path/to/hdfs/directory';

Разберем разные части этого запроса:

  • CREATE EXTERNAL TABLE IF NOT EXISTS table_name: Этот запрос создает новую внешнюю таблицу с указанным именем или пропускает создание, если таблица уже существует.
  • (col1 data_type, col2 data_type, ...): Здесь определяются столбцы таблицы вместе с их типами данных.
  • ROW FORMAT DELIMITED: Этот параметр указывает, что данные во внешнем хранилище разделены определенным символом.
  • FIELDS TERMINATED BY ',': Этот параметр устанавливает разделитель полей в виде запятой.
  • STORED AS TEXTFILE: Этот параметр сообщает Hive, что данные хранятся в текстовом формате.
  • LOCATION '/path/to/hdfs/directory': Этот параметр указывает каталог HDFS, где хранятся данные.

Пример: Создание внешней таблицы Hive

Предположим, что у вас есть CSV-файл, хранящийся в HDFS по пути /user/hive/data/sales.csv. Вы можете создать внешнюю таблицу Hive следующим образом:

CREATE EXTERNAL TABLE IF NOT EXISTS sales (
  product STRING,
  quantity INT,
  price DOUBLE
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE
LOCATION '/user/hive/data/sales.csv';

Этот запрос создает внешнюю таблицу Hive с именем sales с тремя столбцами: product, quantity и price. Ожидается, что данные будут в формате CSV, с полями, разделенными запятыми.

Запрос данных во внешней таблице

Доступ к данным во внешней таблице

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

Примеры запросов

Предположим, что вы создали внешнюю таблицу Hive с именем sales, как показано в предыдущем разделе. Вот несколько примеров запросов, которые вы можете выполнить:

-- Select all rows from the sales table
SELECT * FROM sales;

-- Select specific columns from the sales table
SELECT product, quantity, price FROM sales;

-- Filter the data based on a condition
SELECT * FROM sales WHERE quantity > 10;

-- Perform aggregations on the data
SELECT product, SUM(quantity) AS total_quantity, AVG(price) AS avg_price
FROM sales
GROUP BY product;

Эти запросы будут извлекать данные из каталога HDFS, связанного с таблицей sales, и возвращать результаты пользователю.

Преимущества внешних таблиц

Использование внешних таблиц в Hive имеет несколько преимуществ:

  1. Независимость данных: Внешние таблицы отделяют данные от метахранилища Hive, что позволяет управлять и изменять данные независимо, не влияя на определение таблицы Hive.
  2. Гибкость: Внешние таблицы можно использовать для доступа к данным, хранящимся в различных форматах (например, CSV, Parquet, ORC) и местах (например, HDFS, Amazon S3, Google Cloud Storage).
  3. Уменьшенный объем занимаемого места: Поскольку данные не хранятся в метахранилище Hive, внешние таблицы требуют меньше места для хранения по сравнению с внутренними таблицами.
  4. Простота загрузки данных: Внешние таблицы облегчают загрузку данных в экосистему Hive, так как данные можно напрямую добавить в каталог HDFS без необходимости создания новой таблицы Hive.

Понимая, как создавать и выполнять запросы к внешним таблицам Hive, вы можете эффективно использовать возможности Hive и HDFS для управления и анализа больших данных.

Резюме

В этом руководстве, посвященном Hadoop, вы узнали, как создать внешнюю таблицу Hive для доступа к данным, хранящимся в HDFS. Создав внешнюю таблицу, вы теперь можете выполнять запросы и манипулировать данными, используя знакомый синтаксис Hive SQL, не зная об устройстве и не взаимодействуя напрямую с файловой системой HDFS. Такой подход упрощает работу с данными Hadoop и позволяет использовать мощные возможности экосистемы Hive.