Sqoop导入将TINYINT转换为BOOLEAN

时间:2016-06-22 20:51:31

标签: hadoop hdfs sqoop

我正在尝试使用Sqoop将NFL播放结果的MySQL表导入HDFS。我发出以下命令来实现这个目标:

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

不幸的是,有TINYINT类型的列,在导入时会转换为布尔值。例如,有一个季度&#39;该游戏发生在该游戏的四分之一的列。此列中的值将转换为“真正的”#39;如果比赛发生在第一季度并且“假”&#39;除此以外。

事实上,我做了一个sqoop import-all-tables,导入了我拥有的整个NFL数据库,它的行为就像这样。

有没有解决方法,或者importimport-all-tables的某些论据阻止这种情况发生?

1 个答案:

答案 0 :(得分:5)

在JDBC连接URL中添加tinyInt1isBit=false。像

这样的东西

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

另一种解决方案是显式覆盖数据类型TINYINT(1)列的列映射。例如,如果列名为foo,则在导入期间将以下选项传递给Sqoop:--map-column-hive foo=tinyint。如果非Hive导入到HDFS,请使用--map-column-java foo=integer

Source