0

我正在使用 ODI (12.1.3.0.0)。我为 Oracle DB 创建了拓扑,这没问题,我使用我认为问题所在的文件技术为 HDFS 创建了拓扑。

用于 HDFS 的 DataServer,我将 JDBC 驱动程序留空,并用 hdfs://remotehostname:port 填充 JDBC Url

HDFS 的物理模式,我用 /my/path 填充了模式和工作模式

然后创建逻辑模式和模型。之后,在具有这些定义的模型下创建了 Datastore。名称:TestName 资源名称:TESTFILE.txt 文件格式:固定

做完这些,创建了一个项目,并在项目下进行了映射。

映射

最后,当我运行映射时,我看到了这些错误:

ODI-1217: Session Oracle2HDFSMapping_Physical_SESS (15) fails with return code ODI-1298.
ODI-1226: Step Physical_STEP fails after 1 attempt(s).
ODI-1240: Flow Physical_STEP fails while performing a Add execute to Sqoop script-IKM SQL to HDFS File (Sqoop)- operation. This flow loads target table null.
ODI-1298: Serial task "SERIAL-MAP_MAIN- (10)" failed because child task "SERIAL-EU-GGUSER_UNIT (20)" is in error.
ODI-1298: Serial task "SERIAL-EU-GGUSER_UNIT (20)" failed because child task "Add execute to Sqoop script-IKM SQL to HDFS File (Sqoop)- (40)" is in error.
Caused By: java.io.IOException: Cannot run program "chmod": CreateProcess error=2, The system cannot find the file specified
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1047)
    at java.lang.Runtime.exec(Runtime.java:617)
    at java.lang.Runtime.exec(Runtime.java:450)
    at java.lang.Runtime.exec(Runtime.java:347)
    at oracle.odi.runtime.agent.execution.cmd.OSCommandExecutor.execute(OSCommandExecutor.java:54)
    at oracle.odi.runtime.agent.execution.cmd.OSCommandExecutor.execute(OSCommandExecutor.java:29)
    at oracle.odi.runtime.agent.execution.TaskExecutionHandler.handleTask(TaskExecutionHandler.java:52)
    at oracle.odi.runtime.agent.execution.SessionTask.processTask(SessionTask.java:203)
    at oracle.odi.runtime.agent.execution.SessionTask.doExecuteTask(SessionTask.java:114)
    at oracle.odi.runtime.agent.execution.AbstractSessionTask.execute(AbstractSessionTask.java:886)
    at oracle.odi.runtime.agent.execution.SessionExecutor$SerialTrain.runTasks(SessionExecutor.java:2198)
    at oracle.odi.runtime.agent.execution.SessionExecutor.executeSession(SessionExecutor.java:591)
    at oracle.odi.runtime.agent.processor.TaskExecutorAgentRequestProcessor$1.doAction(TaskExecutorAgentRequestProcessor.java:718)
    at oracle.odi.runtime.agent.processor.TaskExecutorAgentRequestProcessor$1.doAction(TaskExecutorAgentRequestProcessor.java:611)
    at oracle.odi.core.persistence.dwgobject.DwgObjectTemplate.execute(DwgObjectTemplate.java:203)
    at oracle.odi.runtime.agent.processor.TaskExecutorAgentRequestProcessor.doProcessStartAgentTask(TaskExecutorAgentRequestProcessor.java:800)
    at oracle.odi.runtime.agent.processor.impl.StartSessRequestProcessor.access$1400(StartSessRequestProcessor.java:74)
    at oracle.odi.runtime.agent.processor.impl.StartSessRequestProcessor$StartSessTask.doExecute(StartSessRequestProcessor.java:702)
    at oracle.odi.runtime.agent.processor.task.AgentTask.execute(AgentTask.java:180)
    at oracle.odi.runtime.agent.support.DefaultAgentTaskExecutor$2.run(DefaultAgentTaskExecutor.java:108)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.io.IOException: CreateProcess error=2, The system cannot find the file specified
    at java.lang.ProcessImpl.create(Native Method)
    at java.lang.ProcessImpl.<init>(ProcessImpl.java:385)
    at java.lang.ProcessImpl.start(ProcessImpl.java:136)
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1028)
    ... 20 more

我想知道我哪里做错了?

4

1 回答 1

0

对于文件数据存储,您需要通过打开数据存储并转到属性选项卡来定义属性(列)。如果文件已经存在,您可以对属性进行逆向工程并重命名它们并在需要时更改数据类型。

您收到的第二个任务的错误消息提到该文件(在第一个任务中生成)不存在。因此,第一个任务可能存在问题,可能是由于数据存储中缺少属性。

这是 ODI A-Team 编写的关于 SQL To HDFS 文件 (Sqoop) KM 的详细文章:http: //www.ateam-oracle.com/importing-data-from-sql-databases-into-hadoop-with- sqoop-and-oracle-data-integrator-odi/

于 2015-06-29T10:07:49.863 回答