将Hive数据加载到Oracle Db中

时间:2013-07-05 14:46:02

标签: oracle11g hive mapping

我需要使用Odi 11.1.1.6.0将Hive表映射到Oracle Db。

我创建了这两种技术的物理和逻辑模式。 (连接测试没问题) 我有一个使用Http和端口20910的物理和逻辑odi代理。(连接测试没问题)

我使用RKM对两个表进行逆向工程(表Hive和相应字段的相应Oracle表)。

之后,我创建了一个带有接口的项目来测试映射。 我使用拖放来获取源Hive表和Target Oracle Table。 之后,我使用Hive表的每个字段拖放到相应的oracle表。 两个表的每个字段的维度/类型是相同的。 我控制接口的流程,这只使用IKM File-Hive to Oracle(OLH)。

当我启动界面时,会话开始但是出现此错误:

ODI-1226: Step Hive_to_Oracle_test fails after 1 attempt(s).
ODI-1240: Flow Hive_to_Oracle_test fails while performing a Integration operation. This flow loads target table TEST_TABLE.
Caused By: com.sunopsis.dwg.function.SnpsFunctionBaseException: ODI-30038: OS command returned 4.
    at com.sunopsis.dwg.tools.OSCommand.actionExecute(OSCommand.java:294)
    at com.sunopsis.dwg.function.SnpsFunctionBase.execute(SnpsFunctionBase.java:276)
    at com.sunopsis.dwg.dbobj.SnpSessTaskSql.execIntegratedFunction(SnpSessTaskSql.java:3437)
    at com.sunopsis.dwg.dbobj.SnpSessTaskSql.executeOdiCommand(SnpSessTaskSql.java:1509)
    at oracle.odi.runtime.agent.execution.cmd.OdiCommandExecutor.execute(OdiCommandExecutor.java:44)
    at oracle.odi.runtime.agent.execution.cmd.OdiCommandExecutor.execute(OdiCommandExecutor.java:1)
    at oracle.odi.runtime.agent.execution.TaskExecutionHandler.handleTask(TaskExecutionHandler.java:50)
    at com.sunopsis.dwg.dbobj.SnpSessTaskSql.processTask(SnpSessTaskSql.java:2913)
    at com.sunopsis.dwg.dbobj.SnpSessTaskSql.treatTask(SnpSessTaskSql.java:2625)
    at com.sunopsis.dwg.dbobj.SnpSessStep.treatAttachedTasks(SnpSessStep.java:558)
    at com.sunopsis.dwg.dbobj.SnpSessStep.treatSessStep(SnpSessStep.java:464)
    at com.sunopsis.dwg.dbobj.SnpSession.treatSession(SnpSession.java:2093)
    at oracle.odi.runtime.agent.processor.impl.StartSessRequestProcessor$2.doAction(StartSessRequestProcessor.java:366)
    at oracle.odi.core.persistence.dwgobject.DwgObjectTemplate.execute(DwgObjectTemplate.java:216)
    at oracle.odi.runtime.agent.processor.impl.StartSessRequestProcessor.doProcessStartSessTask(StartSessRequestProcessor.java:300)
    at oracle.odi.runtime.agent.processor.impl.StartSessRequestProcessor.access$0(StartSessRequestProcessor.java:292)
    at oracle.odi.runtime.agent.processor.impl.StartSessRequestProcessor$StartSessTask.doExecute(StartSessRequestProcessor.java:855)
    at oracle.odi.runtime.agent.processor.task.AgentTask.execute(AgentTask.java:126)
    at oracle.odi.runtime.agent.support.DefaultAgentTaskExecutor$2.run(DefaultAgentTaskExecutor.java:82)
    at java.lang.Thread.run(Thread.java:662)

hive_to_oracle_test是我的界面,TEST_TABLE是我的oracle表。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我认为你可以使用SQOOP检查https://ccp.cloudera.com/display/con/Quest+Data+Connectors。您还可以查看ORAOOP检查http://archive.cloudera.com/cdh/3/adapters/oraoopuserguide.pdf以获取更多详情。这两者都可以用于从hive到oracle数据库的数据传输。