2015-07-26 5 views
0

Скажите, пожалуйста, в чем разница между 2 командами нижеразница между 2 командами в Sqoop

sqoop import --connect jdbc:mysql://localhost:3306/db1 
--username root --password password 
--table tableName --hive-table tableName --create-hive-table --hive-import; 

sqoop create-hive-table --connect jdbc:mysql://localhost:3306/db1 
--username root --password password; 

Какая разница в использовании --create-hive-table & только create-hive-table в обеих командах?

ответ

0
sqoop-import --connect jdbc:mysql://localhost:3306/db1 
    >-username root -password password 
    >--table tableName --hive-table tableName --create-hive-table --hive-import; 

Приведенная выше команда будет импортировать данные из БД в улье с настройками по умолчанию улей, и если таблица уже не представить это создаст таблицу в улье с той же схеме, как это было в БД.

sqoop create-hive-table --connect jdbc:mysql://localhost:3306/db1 
     >-username root -password password; 

создать улей-инструментальный стол будет создать таблицу в улей Metastore, с определением для таблицы на основе таблицы базы данных, ранее импортированных в HDFS, или один планируется импортировать (она будет выбирать из sqoop работа). Это эффективно выполняет шаг «импорт-импорт» в sqoop-import без использования предшествующего импорта.

Например, рассмотрите, что вы импортировали таблицу1 из db1 в hdfs, используя sqoop. Если вы выполните таблицу create-hive-next, она создаст таблицу в метастаре улья с табличной схемой из db1 таблицы1. Поэтому вам будет полезно загружать данные в эту таблицу в будущем, когда это необходимо.

+0

Благодарим Venkata за ваше хорошее объяснение. Можно загрузить данные в таблицу в Вторая команда использует --hive-import как аргумент улья? как this-> sqoop create-hive-table --connect jdbc: mysql: // localhost: 3306/db1 > -пользователь root-пароль пароль --hive-import; –

+0

Нет. У этого аргумента нет. –

+0

OK..Спасибо Венката .. Можете ли вы дать мне какие-либо ссылки, которые вы прочитали или книги? –

1

Рассмотрим два запроса:

1) Когда --create-hive-table используется содержимое таблицы РСУБД будут скопированы на место упомянутой --target-dir (HDFS Location). Это проверит, существует ли таблица sqoop.emp в Hive или нет. Если таблица в Hive не существует, данные из местоположения HDFS перемещаются в таблицу улья, и все идет хорошо. В случае, если таблица (sqoop.emp) уже существует в улей, выдается ошибка: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. AlreadyExistsException(message:Table emp already exists)

Пример:

sqoop import \ 
--connect jdbc:mysql://jclient.ambari.org/sqoop \ 
--username hdfs -P \ 
--table employee \ 
--target-dir /user/hive/sqoop/employee \ 
--delete-target-dir \ 
--hive-import \ 
--hive-table sqoophive.emp \ 
--create-hive-table \ 
--fields-terminated-by ',' \ 
--num-mappers 3 

2) Когда create-hive-table используются без hive-import Схемы свупа .employee (в СУРБД) извлекается и использует, что таблица создается в базе данных по умолчанию в hive (default.employee). Но данные не передаются.

Пример (Модифицированная форма данного в книге (Hadoop Definitive Guide Том Уайт):

sqoop create-hive-table \ 
--connect jdbc:mysql://jclient.ambari.org/sqoop \ 
--username hdfs -P \ 
--table employee \ 
--fields-terminated-by ',' 

Теперь вопрос, когда использовать то, что бывший используется при отсутствии данных присутствует только в. RDBMS, и нам нужно не только создавать, но и заполнять таблицу в Hive за один раз. Последний используется, когда таблица должна быть создана в Hive, но не заполняется. Или в случае, если данные уже существуют в HDFS и он должен использоваться для заполнения таблицы улей.

+0

Хорошее объяснение Иордании ... но я не понял нескольких строк, которые вы упомянули ... Можете ли вы объяснить то же самое. «Если это будет успешным, таблица sqoop.emp существует в Hive или нет ". & ниже объяснение того, когда использовать - «Или в случае, если данные уже существуют в HDFS, и это должно использоваться для заполнения таблицы улей». .. Спасибо Джордану ... –

+0

Спасибо за указание. Обновлено. Если вы считаете, что это решило ваш вопрос, выберите галочку рядом с ним, чтобы этот вопрос не отображался в списке неотвеченных вопросов. –

Смежные вопросы