2013-05-01 99 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上提交功能請求。

相關問題