Ошибка с командой импорта Sqoop

0

Я пытаюсь импортировать таблицу из базы данных, присутствующей в MySQL, в HDFS, используя Sqoop. В таблице указаны поля col1, col2, col3, col4 и col5. В них много значений NULL. Количество строк с NULL-значениями - 4265550, а количество строк без значений NULL - 1421851. Я хочу блокировать значения NULL при импорте таблицы в HDFS. Ниже приведен мой код,

sqoop import --connect "jdbc:mysql://quickstart.cloudera:3306/database" --username root --password cloudera --query 'SELECT * FROM table_export WHERE ((col1 IS NOT NULL) OR (col2 IS NOT NULL) OR (col3 IS NOT NULL) OR (col4 IS NOT NULL) OR (col5 IS NOT NULL) AND $CONDITIONS)' --target-dir /user/cloudera/input/table_export --direct -m 1

Но когда я запускаю этот запрос, значения NULL также импортируются. Где я неправ?

Если мне нужно использовать "--where условия",

Случай 1:

--where (col1 IS NOT NULL) OR (col2 IS NOT NULL) OR (col3 IS NOT NULL) OR (col4 IS NOT NULL) OR (col5 IS NOT NULL)

Вариант 2:

--where (col1 != NULL) OR (col2 != NULL) OR (col3 != NULL) OR (col4 != NULL) OR (col5 != NULL)

Какой из них я должен использовать? Пожалуйста, помогите мне. заранее спасибо

Теги:
hadoop
sqoop

2 ответа

0
Лучший ответ

Вы можете использовать Case1.

если вы не хотите получить нулевое значение в выходном файле, пожалуйста, измените OR на AND в запрошенном вами запросе.

  • 0
    @Rahul Большое спасибо. Это помогло мне.
1

Вы должны использовать Case1.

--where "(col1 IS NOT NULL) OR (col2 IS NOT NULL) OR (col3 IS NOT NULL) OR (col4 IS NOT NULL) OR (col5 IS NOT NULL)"

потому что результат (col1 != NULL) не определен. NULL не может быть равен или не равен другому значению или NULL. См. Также этот ответ: qaru.site/questions/6197553/...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню