hadoop - Sqoop 导入将 TINYINT 转换为 BOOLEAN

标签 hadoop hdfs sqoop

我正在尝试使用 Sqoop 将 NFL 比赛结果的 MySQL 表导入 HDFS。我发出了以下命令来实现这一点:

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

不幸的是,TINYINT 类型的列在导入时被转换为 bool 值。例如,有一个“quarter”列表示比赛发生在比赛的哪个季度。如果比赛发生在第一节,则此列中的值将转换为“true”,否则转换为“false”。

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

是否有解决此问题的方法,或者可能有一些关于 importimport-all-tables 的参数可以防止这种情况发生?

最佳答案

在您的 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

关于hadoop - Sqoop 导入将 TINYINT 转换为 BOOLEAN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37978030/

相关文章:

sql - 在 Hadoop MapReduce 中缓存 Map 应用程序?

hadoop - 配置单元中的压缩如何提高查询性能?

hadoop - HDFS 上的 Solr 核心创建失败

hadoop - Sqoop 导入已成功完成。如何在 Hive 中查看这些表

hadoop - 在 Hive 中创建外部 Avro 表时,Sqoop 导入为 Avro 数据文件时将所有值都设为 NULL

r - R中的Hadoop wordcount示例

Hadoop 字数 MapReduce : Getting invalid argument error for setInputFormatClass

python - Dask 从 HDFS 分发 : Reading . csv

hadoop - 在 hadoop 中查找文件的第一个 block

oracle - 无法使用 sqoop 列出 oracle 表名