Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hive 永久存储sqoop——DB2的映射列配置单元映射_Hive_Db2_Sqoop_Oozie - Fatal编程技术网

Hive 永久存储sqoop——DB2的映射列配置单元映射

Hive 永久存储sqoop——DB2的映射列配置单元映射,hive,db2,sqoop,oozie,Hive,Db2,Sqoop,Oozie,我正在使用Oozie工作流导入几个DB2数据库表,该工作流使用Sqoop导入到配置单元。目前,我必须手动使用“-map column hive”将每个列映射为不受支持的数据类型 有没有办法永久存储特定数据类型的映射?我正在导入几个包含DB2“Character”列的表,这些列都必须手动映射到配置单元“STRING”。 对于约50个表,有约200个列使用FKs的数据类型“字符”,必须手动映射 我想永久保存DB2“Character”映射到数据类型配置单元“STRING”的情况。 这能做到吗 就我所

我正在使用Oozie工作流导入几个DB2数据库表,该工作流使用Sqoop导入到配置单元。目前,我必须手动使用“-map column hive”将每个列映射为不受支持的数据类型

有没有办法永久存储特定数据类型的映射?我正在导入几个包含DB2“Character”列的表,这些列都必须手动映射到配置单元“STRING”。 对于约50个表,有约200个列使用FKs的数据类型“字符”,必须手动映射

我想永久保存DB2“Character”映射到数据类型配置单元“STRING”的情况。 这能做到吗


就我所见,Sqoop不提供将类型映射作为参数传递的功能。
它们都是:

开关(sqlType){
case Types.INTEGER:
case Types.SMALLINT:
返回蜂巢类型;
case Types.VARCHAR:
case Types.CHAR:
case Types.LONGVARCHAR:
case Types.NVARCHAR:
case Types.NCHAR:
案例类型。LONGNVARCHAR:
案件类型.日期:
案例类型。时间:
案例类型。时间戳:
case Types.CLOB:
返回配置单元类型字符串;
案例类型.数字:
case Types.DECIMAL:
case Types.FLOAT:
案例类型:双:
案例类型.REAL:
返回蜂箱类型双;
case Types.BIT:
case Types.BOOLEAN:
返回配置单元类型布尔值;
案例类型.TINYINT:
返回蜂箱类型;
case Types.BIGINT:
返回蜂巢类型;
违约:
//TODO(aaron):支持二进制、VARBINARY、LONGVARBINARY、DISTINCT、,
//BLOB、数组、结构、REF、JAVA\u对象。
返回null;
}
还有一个具体案例:

if(colTypeName.toUpperCase().startsWith(“XML”)){
返回XML\u到JAVA\u数据类型;
}
如果此映射+用户定义的映射无法识别列类型,请通过
--映射列配置单元
参数,您将得到一个异常

在您的情况下我会做什么(如果不考虑手动列映射):

  • 再次确保DB2的类型映射——“Character”不起作用
  • 下载Sqoop版本的源代码,在
    Db2Manager.toDbSpecificHiveType中添加一个新的if分支,使用一些表进行构建和测试
  • 创建PR并等待下一个版本或使用定制版本的Sqoop(当您想要升级Sqoop版本时可能会很痛苦)

  • 非常感谢你详细的回答。我还注意到类型的映射是在Sqoop的源代码中完成的。我的问题不是使用“-map column hive”手动映射不起作用,因为它们可以完美地进行映射。我的问题是手动将大约200列“Character”数据类型映射到配置单元数据类型“String”,这非常麻烦。我目前不愿意用更改的源代码构建Sqoop,因为正如您所说的,更新将不再正常工作。如果没有人有其他建议,我会接受你的答案(即使这并不能真正解决我的问题)。还有一个选项-创建一个包装器脚本,以用于所有字符列,并形成一个字符串作为映射列配置单元值传递