2016-10-24 3 views
0
sqoop import –connect “jdbc:mysql://quickstart.cloudera:3306/retail_db” \ 
    –username=retail_dba –password=cloudera –table export1 –hive-import \ 
    –hive-table export_3 –create-hive-table –fields-terminated-by “|” \ 
    –lines-terminated-by “\n” –null-string nvl –null-non-string -2 –outdir java_files 

Если я использую вышеприведенная команда дает ошибку,Импорт данных из sqoop в Hive

либо использовать расщепляется или -m 1 для последовательного импорта

, когда я использовал split-by он проигнорировал null значения и импортировал другие в улей

Можете ли вы объяснить причину?

Благодаря Варуна

+0

какой столбец вы использовали для разделения на? –

+0

Имя таблицы - export1 в sql и не имеет первичного ключа. Я использовал department_id с split-by –

+0

Пожалуйста, дайте мне знать столбец, для которого у вас есть нулевые значения, является ли это ведомством? –

ответ

0

Вопросы значение NULL, котор вы получаете не связаны с расщепленным с помощью.

Sqoop будет по умолчанию импортировать значения NULL в виде строки null. Однако Hive использует string \ N для обозначения значений NULL, и поэтому предикаты, имеющие дело с NULL (например, IS NULL), будут работать некорректно. Вы должны добавить параметры --null-string и -null-non-string в случае задания импорта или -input-null-string и -input-null-non-string в случае задания экспорта, если вы хотите правильно сохранить значения NULL. Поскольку sqoop использует эти параметры в сгенерированном коде, вам нужно правильно избежать значения \ N в \ N:

$ sqoop import ... --null-string '\\N' --null-non-string '\\N' 
+0

Если я использую ту же команду, что и в вопросе, и просто добавлю -m, она работает. Вы обосновываете ее? –

+0

, пожалуйста, отправьте свою команду разделения –

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