Кто-нибудь может сказать разницу между методами create-hive-table
и hive-import
? Оба создадут таблицу кустов, но все же, каково значение каждого из них?
Когда использовать Sqoop --create-hive-table
Ответы (2)
команда hive-import:hive-import
команды автоматически заполняют метаданные для заполняемых таблиц в хранилище метаданных hive. Если таблица в Hive еще не существует, Sqoop просто создаст ее на основе метаданных, полученных для вашей таблицы или запроса. Если таблица уже существует, Sqoop импортирует данные в существующую таблицу. Если вы создаете новую таблицу Hive, Sqoop преобразует типы данных каждого столбца из исходной таблицы в тип, совместимый с Hive.
команда create-hive-table:
Sqoop может создать таблицу куста (используя create-hive-table
command) на основе таблицы из существующего реляционного источника данных. Если установлено, задание завершится ошибкой, если целевая таблица куста существует. По умолчанию это свойство имеет значение false.
Использование команды create-hive-table
включает три шага: импорт данных в HDFS, создание таблицы куста, а затем загрузку данных HDFS в Hive. Это можно сократить до одного шага, используя hive-import
.
Во время hive-import
Sqoop сначала выполнит обычный импорт HDFS во временное расположение. После успешного импорта Sqoop генерирует два запроса: один для создания таблицы и другой для загрузки данных из временного местоположения. Вы можете указать любое временное местоположение, используя параметр --target-dir
или --warehouse-dir
.
К приведенному выше описанию добавлен пример ниже
Использование команды create-hive-table
включает три шага:
Импорт данных из СУБД в HDFS
sqoop import --connect jdbc:mysql://localhost:3306/hadoopexample --table employees --split-by empid -m 1;
Создание таблицы куста с помощью команды
create-hive-table
sqoop create-hive-table --connect jdbc:mysql://localhost:3306/hadoopexample --table employees --fields-terminated-by ',';
Загрузка данных в 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;
Разница в том, что create-hive-table создаст таблицу в Hive на основе исходной таблицы в базе данных, но НЕ перенесет какие-либо данные. Команда «import --hive-import» создаст таблицу в Hive и импортирует данные из исходной таблицы.