2013-05-01 41 views
3

我想从Microsoft SQL Server中查找使用sqoop。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

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

相关问题