Импортируйте все таблицы из RDBMS, используя sqoop
Я пытаюсь импортировать данные из тестирования базы данных mysql в hadoop с помощью sqoop. Но в некоторых таблицах, имеющих первичные, а в некоторых таблицах первичный ключ отсутствует.
$sqoop import-all-tables --connect jdbc:mysql://192.168.0.101/mysql -username test -P --warehouse-dir /home/user_all_tables
17/08/01 22:46:54 ОШИБКА tool.ImportAllTablesTool: Ошибка при импорте: не удалось найти первичный ключ для таблицы general_log. Пожалуйста, укажите один с --split-by или выполните последовательный импорт с '-m 1'.
Пожалуйста, предложите мне, как использовать split в командной строке sqoop.
1 ответ
Для import-all-tables
Чтобы инструмент был полезен, должны соблюдаться следующие условия:
- Каждая таблица должна иметь первичный ключ из одного столбца.
- Вы должны намереваться импортировать все столбцы каждой таблицы.
- Вы не должны использовать столбец разделения по умолчанию, а также не накладывать никаких условий с помощью предложения WHERE.
Опция по умолчанию не соответствует таблице не первичного ключа, поэтому она не работает. Здесь я буду предлагать использовать -m 1
возможность строгого импорта только с одним картографом.
Команда Sqoop:
import-all-tables --connect jdbc:mysql://192.168.0.101/mysql -username test \
-P --warehouse-dir /home/user_all_tables -m 1