2016-10-22 3 views
-1

1 команды:sqoop импорта в улей

sqoop import \ 
–connect “jdbc:mysql://quickstart.cloudera:3306/retail_db” \ 
–username retail_dba \ 
–password cloudera \ 
–table departments \ 
–hive-home /user/hive/warehouse \ 
–hive-import \ 
–hive-overwrite \ 
–hive-table sqoop_import.departments \ 
–outdir java_files 

вторая команда:

sqoop import \ 
–connect “jdbc:mysql://quickstart.cloudera:3306/retail_db” \ 
–username retail_dba \ 
–password cloudera \ 
–table departments \ 
–target-dir=/user/hive/warehouse/department_test \ 
–append 

В обоих командах мы создаем таблицу в улье без указания поля и строки разделителей и импорта с помощью sqoop, то почему во втором случае мы получаем Null, а не в первом случае

+0

Прежде всего, команда 2 не является командой импорта улья, она будет извлекать данные из MySQL в указанный HDFS '--target-dir'. Во-вторых, как получить NULL? –

+0

Нулевые данные, когда я обращаюсь к таблице department_test в hive –

+0

, вы создаете таблицу с расположением '/ user/hive/warehouse/department_test' во втором случае? –

ответ

0

улей по умолчанию разделитель

  • поле: CTRL+A
  • ЛИНИЯ: \n

Случай 1: HIVE ИМПОРТ

Импорт таблиц в улье (. Использование разделителей улья по умолчанию, если ни один не установлены)

Кроме того, он создает таблицу, указанную в --hive-table(если не существует) с разделителем по умолчанию для улья.

Случай 2: HDFS ИМПОРТ

В этом случае, данные из СУБД хранится в виде , разделитель полей и разделитель \n линии (по умолчанию) который не является разделители по умолчанию для улья. Вот почему вы получаете NULL записи в своих данных.

Вы можете решить, используя два способа:

  • Изменение вашего Hive таблицы разделителей полей

  • использовать --fields-terminated-by в вашей команде IMPORT.

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