Sqoop将整数作为字符串导入

时间:2013-05-01 20:38:40

标签: sqoop oozie

我试图在Microsoft SQL Server的查找中使用sqoop。

这是我的sqoop脚本:

sqoop import \
--connect 'jdbc:sqlserver://LOOKUPDB-INT;database=Lookup_INT' \
--query "SELECT a.xlate_id, a.foreign_id as XlateKey, CAST(a.main_id as int) as main_id FROM Legacy.Xlate a WHERE a.foreign_source_id = '11' AND \$CONDITIONS" \ 
--hbase-create-table --hbase-table DataXlate \
--column-family DataXlate \
--hbase-row-key XlateKey  --split-by xlate_id \
--map-column-java main_id=Integer

sqoop命令似乎工作,因为使用我期望的列创建表。但是,当我使用java应用程序连续读取时,返回的main_id的字节是字符串而不是整数。因此,如果main_id为1,我希望得到0x1,但我得到0x31,这是'1'的ascii代码。 请注意,a.main_id已经是整数。演员表演是为了帮助sqoop认识到这一事实。

此外,我将此作为oozie工作流程的一部分运行。

1 个答案:

答案 0 :(得分:1)

这是故意行为,Sqoop以字符串形式序列化所有列。有关更多背景信息,请查看Sqoop User Guide。如果您有兴趣改进此功能,可以在Sqoop JIRA上提交功能请求。