Sqoop: импортировать все таблицы, конвертирующие типы BLOB-объектов
Я пытаюсь импортировать все таблицы из моего Oracle 11g R2 (import-all-tables) и сталкиваюсь с проблемой с типом CLOB. (Используя CDH 5.9, Sqoop 1.4.6-cdh5.9.1)
Первая попытка:
sqoop import-all-tables --connect ... --hive-import --hive-overwrite --as-parquet-file --autoreset-to-one-mapper -m XX --direct
Таблицы корректно импортируются до тех пор, пока не будет найдена одна таблица со столбцом CLOB, и выдает следующую ошибку: Не удается преобразовать в тип SQL 2005.
Вторая попытка:
sqoop import-all-tables -D oraoop.disabled=true --connect ... --hive-import --hive-overwrite --as-parquet-file --autoreset-to-one-mapper -m XX
Я получаю ту же ошибку.
Третья попытка
sqoop import --connect ... --hive-import --hive-overwrite --as-parquet-file --autoreset-to-one-mapper -m XX --table MyClobTable --map-column-java CLOBCOL=String
Это работает, поэтому я пытаюсь получить то же самое со всеми таблицами:
sqoop import-all-tables --connect ... --hive-import --hive-overwrite --as-parquet-file --autoreset-to-one-mapper -m XX --map-column-java CLOBCOL=String
Это терпит неудачу, потому что только у одной из моих таблиц есть столбец CLOBCOL.
Есть ли способ использовать импорт-все-таблицы, исправить ошибку типа SQL 2005 или сообщить Sqoop, как решить ее "на лету"?
Спасибо!
1 ответ
Вы не должны использовать команду --direct, так как документ sqoop говорит: "Прямой режим Sqoop не поддерживает импорт столбцов BLOB, CLOB или LONGVARBINARY. Используйте импорт для этих столбцов на основе JDBC; не предоставляйте аргумент --direct для импорта инструмент."