1

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

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

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

之后,我创建了一个带有接口的项目来测试映射。我对源 Hive 表和目标 Oracle 表使用拖放操作。之后,我将 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 表。

任何想法?

4

1 回答 1

0

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

于 2013-07-08T05:47:17.553 回答