Sqoop导入将TINYINT转换为BOOLEAN

use*_*931 2 hadoop hdfs sqoop

我试图使用Sqoop将一个NFL播放结果的MySQL表导入HDFS.我发出以下命令来实现这个目的:

sqoop import \
--connect jdbc:mysql://127.0.0.1:3306/nfl \
--username <username> -P \
--table play
Run Code Online (Sandbox Code Playgroud)

不幸的是,有一些类型的列,TINYINT在导入时会被转换为布尔值.例如,游戏发生在游戏的四分之一处有一个"四分之一"列.如果游戏发生在第一季度,则此列中的值将转换为"真",否则将转换为"假".

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

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

pra*_*por 5

添加tinyInt1isBit=falseJDBC连接URL.就像是

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.

资源