Импортируйте все таблицы из 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
Другие вопросы по тегам