Введение
В этом руководстве вы узнаете, как создать внешнюю таблицу 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 имеет несколько преимуществ:
- Независимость данных: Внешние таблицы отделяют данные от метахранилища Hive, что позволяет управлять и изменять данные независимо, не влияя на определение таблицы Hive.
- Гибкость: Внешние таблицы можно использовать для доступа к данным, хранящимся в различных форматах (например, CSV, Parquet, ORC) и местах (например, HDFS, Amazon S3, Google Cloud Storage).
- Уменьшенный объем занимаемого места: Поскольку данные не хранятся в метахранилище Hive, внешние таблицы требуют меньше места для хранения по сравнению с внутренними таблицами.
- Простота загрузки данных: Внешние таблицы облегчают загрузку данных в экосистему Hive, так как данные можно напрямую добавить в каталог HDFS без необходимости создания новой таблицы Hive.
Понимая, как создавать и выполнять запросы к внешним таблицам Hive, вы можете эффективно использовать возможности Hive и HDFS для управления и анализа больших данных.
Резюме
В этом руководстве, посвященном Hadoop, вы узнали, как создать внешнюю таблицу Hive для доступа к данным, хранящимся в HDFS. Создав внешнюю таблицу, вы теперь можете выполнять запросы и манипулировать данными, используя знакомый синтаксис Hive SQL, не зная об устройстве и не взаимодействуя напрямую с файловой системой HDFS. Такой подход упрощает работу с данными Hadoop и позволяет использовать мощные возможности экосистемы Hive.



