Когда использовать Sqoop --create-hive-table

Кто-нибудь может сказать разницу между методами create-hive-table и hive-import? Оба создадут таблицу кустов, но все же, каково значение каждого из них?


person Priya v v    schedule 20.07.2015    source источник


Ответы (2)


команда hive-import:
hive-import команды автоматически заполняют метаданные для заполняемых таблиц в хранилище метаданных hive. Если таблица в Hive еще не существует, Sqoop просто создаст ее на основе метаданных, полученных для вашей таблицы или запроса. Если таблица уже существует, Sqoop импортирует данные в существующую таблицу. Если вы создаете новую таблицу Hive, Sqoop преобразует типы данных каждого столбца из исходной таблицы в тип, совместимый с Hive.
команда create-hive-table:
Sqoop может создать таблицу куста (используя create-hive-tablecommand) на основе таблицы из существующего реляционного источника данных. Если установлено, задание завершится ошибкой, если целевая таблица куста существует. По умолчанию это свойство имеет значение false.

Использование команды create-hive-table включает три шага: импорт данных в HDFS, создание таблицы куста, а затем загрузку данных HDFS в Hive. Это можно сократить до одного шага, используя hive-import.

Во время hive-import Sqoop сначала выполнит обычный импорт HDFS во временное расположение. После успешного импорта Sqoop генерирует два запроса: один для создания таблицы и другой для загрузки данных из временного местоположения. Вы можете указать любое временное местоположение, используя параметр --target-dir или --warehouse-dir.

К приведенному выше описанию добавлен пример ниже

Использование команды create-hive-table
включает три шага:

  1. Импорт данных из СУБД в HDFS

    sqoop import --connect jdbc:mysql://localhost:3306/hadoopexample --table employees --split-by empid -m 1;

  2. Создание таблицы куста с помощью команды create-hive-table

    sqoop create-hive-table --connect jdbc:mysql://localhost:3306/hadoopexample --table employees --fields-terminated-by ',';

  3. Загрузка данных в Hive

    hive> load data inpath "employees" into table employees; Loading data to table default.employees Table default.employees stats: [numFiles=1, totalSize=70] OK Time taken: 2.269 seconds hive> select * from employees; OK 1001 emp1 101 1002 emp2 102 1003 emp3 101 1004 emp4 101 1005 emp5 103 Time taken: 0.334 seconds, Fetched: 5 row(s)

Использование команды hive-import:

sqoop import --connect jdbc:mysql://localhost:3306/hadoopexample --table departments --split-by deptid -m 1 --hive-import;

person Sai Neelakantam    schedule 22.07.2015
comment
Я думаю, что это копирование и вставка из руководства пользователя не особенно полезно. - person Jarek Jarcec Cecho; 24.07.2015
comment
Но когда я пытался использовать эту команду более одного раза, я не получил ошибку, как будто таблица уже существует. Это команда, которую я пробовал. sqoop create-hive-table --connect jdbc:mysql://localhost:3306 /TestDB -имя пользователя root -пароль root --таблица tb2; .. Не могли бы вы объяснить, что вы подразумеваете под командой create-hive-table, состоящей из трех шагов.. Не могли бы вы дать мне примеры команд?? Спасибо еще раз :) - person Priya v v; 25.07.2015
comment
Скажите, пожалуйста, в чем разница между приведенными ниже двумя командами sqoop-import --connect jdbc:mysql://localhost:3306/db1 -username root -password password --table tableName --hive-table tableName --create-hive -таблица --улей-импорт - person Priya v v; 25.07.2015

Разница в том, что create-hive-table создаст таблицу в Hive на основе исходной таблицы в базе данных, но НЕ перенесет какие-либо данные. Команда «import --hive-import» создаст таблицу в Hive и импортирует данные из исходной таблицы.

person Jarek Jarcec Cecho    schedule 24.07.2015
comment
Это создает внутреннюю или внешнюю таблицу? - person zsad512; 05.02.2018