Как получить ошибочные данные в Sqoop при импорте?

У меня есть импорт 10 записей из СУБД в Hadoop через Sqoop, задание завершается ошибкой при загрузке 7-й записи, как я могу получить последние три записи в одиночку в следующий раз. Может ли кто-нибудь помочь мне с синтаксисом?


person Kanagasubramanian    schedule 14.10.2018    source источник


Ответы (1)


Вы можете использовать --last-modified или --incremental-append, чтобы получить только эти 3 строки, и это можно сделать только тогда, когда у вас есть идентификатор этой конкретной строки (7-я строка в вашем случае).

Пожалуйста, посмотрите на приведенную ниже команду, которая возвращает вам новые добавленные записи после этой конкретной метки времени. В вашем случае, если вы передадите идентификатор 7-й строки, вы получите следующие 3 строки из этой команды.

sqoop import --connect jdbc:mysql://hostname/dbname --username root --password cloudera --table tablename --target-dir /user/cloudera/new_directory_name -m 1 --check-column column_name --incremental append --last-value "2018-10-19 20:46:33"
person Anmol Kankariya    schedule 19.10.2018
comment
Привет, Анмол. Спасибо за ваш вклад. Я говорю о 7 записях для примера, если между ними произошел сбой задания, и мы не знаем, сколько записей загружено, в этом случае какое решение будет? - person Kanagasubramanian; 29.10.2018
comment
В этом случае мы можем просто создать один сценарий оболочки, который может извлекать идентификатор последней строки из таблицы куста и сохранять его в переменной, передав эту переменную команде sqoop, мы можем загрузить остальные записи. - person Anmol Kankariya; 20.11.2018
comment
можем ли мы запустить эту команду в случае более чем 1 картографа, тогда набор данных будет разделен на несколько частей? - person vikas malik; 21.01.2020
comment
@vikasmalik да, мы можем. - person Anmol Kankariya; 24.04.2020