Sqoop 将整数作为字符串导入

标签 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 工作流程的一部分运行。

最佳答案

这是有意的行为,Sqoop 以字符串形式序列化所有列。请看一下Sqoop User Guide更多背景。您可以在 Sqoop JIRA 上提交功能请求如果你有兴趣改善这一点。

关于Sqoop 将整数作为字符串导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16326097/

相关文章:

hadoop - 如何使用Sqoop以Parquet-Avro文件格式保存数据?

spring - orm.CompilationManager 问题 : java compilation Error in Spring

hadoop - 以 ORCFile 格式创建输出

hadoop - 配置单元导入和配置单元覆盖sqoop导入全部

用于重新运行工作流且跳过节点不起作用的 Oozie 命令

hadoop - sqoop中数据是如何拆分成part文件的

sql-server - Oozie Sqoop 作业

hive - oozie-输出数据超出其限制[2048]

hadoop - 无法在kerberized集群上提交oozie作业

exception - 检查 oozie 工作流状态时获取 HadoopAccessorException