我正在尝试在 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 工作流程的一部分运行。