2016-06-22 2 views
0

Я пытаюсь импортировать таблицу MySQL из результатов воспроизведения NFL в HDFS с использованием Sqoop. Я выпустил следующую команду для достижения этой цели:Sqoop import converting TINYINT to BOOLEAN

sqoop import \ 
--connect jdbc:mysql://127.0.0.1:3306/nfl \ 
--username <username> -P \ 
--table play 

К сожалению, есть столбцы типа TINYINT, которые будучи преобразованы в булевские при импорте. Например, есть столбец «четверть», для которого в четверть игры произошла игра. Значение в этом столбце преобразуется в «истина», если игра произошла в первой четверти, а «ложь» - в противном случае.

Фактически, я сделал sqoop import-all-tables, импортируя всю базу данных NFL, которую я имею, и она ведет себя как это равномерно.

Есть ли способ обойти это или, возможно, какой-то аргумент для import или import-all-tables, который предотвращает это?

+0

Отображение для каждого столбца таблицы должен обрабатываться отдельно, используя карту колонки улей –

+0

Это происходит независимо от моего использования улья. Файлы в моем домашнем каталоге HDFS (например, после выполнения вышеупомянутого задания Sqoop) также демонстрируют это явление. – user4601931

ответ

3

Добавить tinyInt1isBit=false в ваш URL-адрес соединения JDBC. Нечто подобное

jdbc:mysql://127.0.0.1:3306/nfl?tinyInt1isBit=false

Другим решением было бы явно переопределить отображение столбца для типа данных TINYINT (1) колонку. Например, если имя столбца равно foo, затем передайте следующий параметр Sqoop во время импорта: --map-column-hive foo=tinyint. В случае импорта не-кустов в HDFS используйте --map-column-java foo=integer.

Source