sqoop 导出指南
https://sqoop.apache.org/docs/1.4.2/SqoopUserGuide.html#_lite...

原文链接防止盗用:https://segmentfault.com/a/1190000041586691

HIVE类型
image.png

问题1
如果mysql中有字段类型是tinyint(1)的话,即tinyint(1)类型值变成了布尔值
问题2
hive 识别不了无符号 unsigned,mysql的 tinyint(3) unsigned 在hive中最大的值还是127?

解决方法总结:
如果使用sqoop-export导出到mysql中,如果mysql中有字段类型是tinyint(1)的话,就会和导入时遇到的问题一样,即tinyint(1)类型值变成了布尔值,导入时需加上?tinyInt1isBit=false。

导出解决方法:mysql字段类型tinyint(1)改成tinyiny(2)或者使用smallint,int类型

另外一种导入时设置类型转换--map-column-hive column_name=HiveDataType

正常应该是这样
image.png
导出的tinyint(1)异常
image.png

下面为导入的时使用参数,但是没发现有导出时的参数
23.2.5. MySQL: Import of TINYINT(1) from MySQL behaves strangely
Problem: Sqoop is treating TINYINT(1) columns as booleans, which is for example causing issues with HIVE import. This is because by default the MySQL JDBC connector maps the TINYINT(1) to java.sql.Types.BIT, which Sqoop by default maps to Boolean.

Solution: A more clean solution is to force MySQL JDBC Connector to stop converting TINYINT(1) to java.sql.Types.BIT by adding tinyInt1isBit=false into your JDBC path (to create something like jdbc:mysql://localhost/test?tinyInt1isBit=false). Another solution would be to explicitly override the column mapping for the datatype TINYINT(1) column. For example, if the column name is foo, then pass the following option to Sqoop during import: --map-column-hive foo=tinyint. In the case of non-Hive imports to HDFS, use --map-column-java foo=integer.

原文链接防止盗用:https://segmentfault.com/a/1190000041586691

Hive Sqoop 导入操作通常是从关系型数据库(如MySQL、Oracle等)导入数据到Hive中。在这个过程中,Sqoop会尝试自动映射数据库中的列到Hive表中的列,并使用适当的数据类型。但是,你可以通过一些参数来指定或更改Sqoop导入时使用的数据类型。

以下是一些常见的参数和选项,可用于在Sqoop导入期间指定数据类型:

--map-column-hive 参数:使用这个参数可以指定列映射规则,将数据库列映射到Hive表中的列。你可以在这里指定目标Hive列的数据类型,以覆盖Sqoop的默认映射。例如:

--map-column-hive column_name=HiveDataType
其中,column_name 是数据库列的名称,HiveDataType 是你想要在Hive表中使用的数据类型。

--hive-overwrite 参数:如果你希望覆盖已存在的Hive表而不是追加数据,你可以使用此参数。这有助于确保新数据的数据类型与表的定义匹配。

--create-hive-table 参数:如果你想要Sqoop创建一个新的Hive表来存储导入的数据,可以使用此参数。在创建表时,Sqoop会尝试根据数据库列的数据类型创建Hive表的列。

请注意,Sqoop的自动映射通常是基于一些默认的映射规则,但它可能不适用于所有情况。因此,使用上述参数来指定数据类型可以确保数据类型的一致性和正确性。在指定数据类型时,请确保它们与Hive表的定义相匹配,以避免数据类型不匹配的问题。

自己写转换逻辑
https://blog.csdn.net/Yellow_python/article/details/124291706
Sqoop导入的数据格式问题
https://www.jianshu.com/p/4b3c813a40a0


s8fh26h3
18 声望1 粉丝