Работа с таблицами Hive
Существует несколько способов работы с таблицами Hive.
Вы можете использовать DML-запросы (Data Manipulation Language, DML) для импорта или добавления данных в таблицу. Также вы можете напрямую перенести таблицу в Hive, используя HDFS-команды. Если ваши данные хранятся в реляционной базе данных, такой как MySQL, Oracle, IBM DB2 и другие, вы можете использовать Sqoop для эффективного переноса петабайт данных между Hadoop и Hive. В примерах ниже мы используем SQL для загрузки и вставки данных в Hive-таблицу.
Запуск Hive
Перед началом работы убедитесь, что ваш Hive-сервер запущен. Оболочка Hive доступна на машине, где установлен компонент Hive HiveServer2.
-
Используйте веб-интерфейс ADCM, чтобы узнать имя хоста, на котором установлен компонент Hive HiveServer2.
-
Присоединитесь к машине с Hive-сервером по SSH.
-
Выполните команду
hive
:$ sudo -u hive hive
Пример вывода команды представлен ниже.
SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/usr/lib/hadoop/lib/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Found binding in [jar:file:/usr/lib/phoenix/phoenix-5.0.0-HBase-2.0-client.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Found binding in [jar:file:/usr/lib/phoenix/phoenix-5.0.0-HBase-2.0-hive.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Found binding in [jar:file:/usr/lib/phoenix/phoenix-5.0.0-HBase-2.0-pig.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Found binding in [jar:file:/usr/lib/phoenix/phoenix-5.0.0-HBase-2.0-thin-client.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory] SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/usr/lib/hive/lib/log4j-slf4j-impl-2.10.0.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Found binding in [jar:file:/usr/lib/hadoop/lib/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory] Hive Session ID = c93e27de-24b5-4a3c-8488-925926d54d78 Logging initialized using configuration in jar:file:/usr/lib/hive/lib/hive-common-3.1.1.jar!/hive-log4j2.properties Async: true Hive Session ID = 88e81126-ac59-497e-bac2-709a665d4cf2 hive>
Создание таблицы
Используйте команду CREATE
для создания таблицы.
Следующая команда создает таблицу solar_objects
, используя символ ,
в качестве разделителя для колонок:
CREATE TABLE solar_objects(
Name STRING,
Mass INT,
Diameter INT)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ',';
Пример вывода представлен ниже:
OK Time taken: 0.074 seconds
Вставка значений в таблицу
Используйте команду INSERT
для наполнения таблицы данными:
INSERT INTO TABLE
solar_objects
VALUES
('Sun',1989100000,1392000),
('Mercury',330,4879),
('Venus',4867,12104),
('Earth',5972,12742),
('Mars',642,6780),
('Jupiter',1898187,139822),
('Saturn',568317,116464),
('Uranus',86813,50724),
('Neptune',102413,49244);
Пример вывода представлен ниже:
Query ID = aai_20211116141418_4a40a2c4-1d21-422c-80ee-cf0f95f35000 Total jobs = 1 Launching Job 1 out of 1 Tez session was closed. Reopening... Session re-established. Session re-established. Status: Running (Executing on YARN cluster with App id application_1637045461848_0005) ---------------------------------------------------------------------------------------------- VERTICES MODE STATUS TOTAL COMPLETED RUNNING PENDING FAILED KILLED ---------------------------------------------------------------------------------------------- Map 1 .......... container SUCCEEDED 1 1 0 0 0 0 Reducer 2 ...... container SUCCEEDED 1 1 0 0 0 0 ---------------------------------------------------------------------------------------------- VERTICES: 02/02 [==========================>>] 100% ELAPSED TIME: 5,42 s ---------------------------------------------------------------------------------------------- Loading data to table default.solar_objects OK Time taken: 15.12 seconds
Выборка данных
Используйте SELECT
для выборки данных из таблицы:
SELECT * FROM solar_objects;
Пример вывода представлен ниже:
OK Sun 1989100000 1392000 Mercury 330 4879 Venus 4867 12104 Earth 5972 12742 Mars 642 6780 Jupiter 1898187 139822 Saturn 568317 116464 Uranus 86813 50724 Neptune 102413 49244 Time taken: 0.17 seconds, Fetched: 9 row(s)