Работа с таблицами Hive

Существует несколько способов работы с таблицами Hive.

Вы можете использовать DML-запросы (Data Manipulation Language, DML) для импорта или добавления данных в таблицу. Также вы можете напрямую перенести таблицу в Hive, используя HDFS-команды. Если ваши данные хранятся в реляционной базе данных, такой как MySQL, Oracle, IBM DB2 и другие, вы можете использовать Sqoop для эффективного переноса петабайт данных между Hadoop и Hive. В примерах ниже мы используем SQL для загрузки и вставки данных в Hive-таблицу.

Запуск Hive

Перед началом работы убедитесь, что ваш Hive-сервер запущен. Оболочка Hive доступна на машине, где установлен компонент Hive HiveServer2.

  1. Используйте веб-интерфейс ADCM, чтобы узнать имя хоста, на котором установлен компонент Hive HiveServer2.

  2. Присоединитесь к машине с Hive-сервером по SSH.

  3. Выполните команду 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)

Удаление таблицы

Чтобы удалить таблицу, используйте команду DROP:

DROP TABLE solar_objects;

Пример вывода представлен ниже:

OK
Time taken: 1.991 seconds
Нашли ошибку? Выделите текст и нажмите Ctrl+Enter чтобы сообщить о ней