我正在导入几个带有oozie工作流的db2数据库表,该工作流使用sqoop导入到hive。目前,我必须用“-map column hive”手动Map每个数据类型不受支持的列。
有没有办法永久存储特定数据类型的Map?我正在导入几个表,其中包含db2“character”列,这些列都必须手动Map到配置单元“string”。对于~50个表,有~200个列使用fks的数据类型“character”,必须手动Map。
我想永久保存db2-“character”Map到数据类型hive-“string”。这能做到吗?
当做
1条答案
按热度按时间dzjeubhm1#
据我所知,sqoop不提供将类型到类型Map作为参数传递的能力。
它们都是显式硬编码的:
对于db2中的xml列,还有一个特定的例子:
如果此Map无法识别列类型+通过
--map-column-hive
参数,则会出现异常。在您的情况下我会做什么(如果不考虑手动列Map):
再次确保db2的类型Map——“character”不起作用
下载sqoop版本的源代码,在中添加一个新的if分支
Db2Manager.toDbSpecificHiveType
,使用一些表进行构建和测试创建一个pr并等待下一个版本,或者使用定制的sqoop版本(当您想要升级sqoop版本时可能会很痛苦)