Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle Data Integrator SQL to HDFS IKM返回错误_Oracle_Hdfs_Sqoop_Oracle Data Integrator - Fatal编程技术网

Oracle Data Integrator SQL to HDFS IKM返回错误

Oracle Data Integrator SQL to HDFS IKM返回错误,oracle,hdfs,sqoop,oracle-data-integrator,Oracle,Hdfs,Sqoop,Oracle Data Integrator,我正在使用ODI(12.1.3.0.0)。我为oracledb创建了拓扑结构,这还可以,我使用文件技术为HDFS创建了拓扑结构,我认为问题出在哪里 对于HDFS,我将JDBC驱动程序留空,并用hdfs://remotehostname:port 对于HDFS的物理模式,我用/my/path填充了模式和工作模式 然后创建逻辑模式和模型。之后,使用这些定义在模型下创建数据存储。 名称:TestName 资源名称:TESTFILE.txt 文件格式:固定 在所有这些之后,创建了一个项目和项目下的映射

我正在使用ODI(12.1.3.0.0)。我为oracledb创建了拓扑结构,这还可以,我使用文件技术为HDFS创建了拓扑结构,我认为问题出在哪里

对于HDFS,我将JDBC驱动程序留空,并用hdfs://remotehostname:port

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

然后创建逻辑模式和模型。之后,使用这些定义在模型下创建数据存储。 名称: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
ODI-1217:会话Oracle2HDFSMapping_Physical_SESS(15)失败,返回代码为ODI-1298。
ODI-1226:尝试1次后,步骤物理_步骤失败。
ODI-1240:执行添加执行到Sqoop脚本IKM SQL到HDFS文件(Sqoop)-操作时,流物理_步骤失败。此流加载目标表null。
ODI-1298:串行任务“Serial-MAP_MAIN-(10)”失败,因为子任务“Serial-EU-GGUSER_单元(20)”出错。
ODI-1298:串行任务“Serial-EU-GGUSER_单元(20)”失败,因为子任务“将执行添加到Sqoop脚本IKM SQL到HDFS文件(Sqoop)-(40)”出错。
原因:java.io.IOException:无法运行程序“chmod”:CreateProcess error=2,系统找不到指定的文件
位于java.lang.ProcessBuilder.start(ProcessBuilder.java:1047)
位于java.lang.Runtime.exec(Runtime.java:617)
位于java.lang.Runtime.exec(Runtime.java:450)
位于java.lang.Runtime.exec(Runtime.java:347)
位于oracle.odi.runtime.agent.execution.cmd.OSCommandExecutor.execute(OSCommandExecutor.java:54)
位于oracle.odi.runtime.agent.execution.cmd.OSCommandExecutor.execute(OSCommandExecutor.java:29)
位于oracle.odi.runtime.agent.execution.TaskExecutionHandler.HandletTask(TaskExecutionHandler.java:52)
位于oracle.odi.runtime.agent.execution.SessionTask.processTask(SessionTask.java:203)
在oracle.odi.runtime.agent.execution.SessionTask.doExecuteTask(SessionTask.java:114)中
位于oracle.odi.runtime.agent.execution.AbstractSessionTask.execute(AbstractSessionTask.java:886)
在oracle.odi.runtime.agent.execution.SessionExecutor$SerialTrain.runTasks(SessionExecutor.java:2198)中
在oracle.odi.runtime.agent.execution.SessionExecutor.executeSession(SessionExecutor.java:591)中
位于oracle.odi.runtime.agent.processor.TaskExecutorAgentRequestProcessor$1.doAction(TaskExecutorAgentRequestProcessor.java:718)
位于oracle.odi.runtime.agent.processor.TaskExecutorAgentRequestProcessor$1.doAction(TaskExecutorAgentRequestProcessor.java:611)
位于oracle.odi.core.persistence.dwgobject.DwgObjectTemplate.execute(DwgObjectTemplate.java:203)
位于oracle.odi.runtime.agent.processor.TaskExecutorAgentRequestProcessor.doProcessStartAgentTask(TaskExecutorAgentRequestProcessor.java:800)
在oracle.odi.runtime.agent.processor.impl.StartSessRequestProcessor.access$1400(StartSessRequestProcessor.java:74)
在oracle.odi.runtime.agent.processor.impl.StartSessRequestProcessor$StartSessTask.doExecute(StartSessRequestProcessor.java:702)
在oracle.odi.runtime.agent.processor.task.AgentTask.execute(AgentTask.java:180)中
位于oracle.odi.runtime.agent.support.DefaultAgentTaskExecutor$2.run(DefaultAgentTaskExecutor.java:108)
运行(Thread.java:745)
原因:java.io.IOException:CreateProcess error=2,系统找不到指定的文件
在java.lang.ProcessImpl.create(本机方法)
位于java.lang.ProcessImpl.(ProcessImpl.java:385)
在java.lang.ProcessImpl.start(ProcessImpl.java:136)
位于java.lang.ProcessBuilder.start(ProcessBuilder.java:1028)
... 20多

我想知道我哪里做错了?

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

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

以下是ODI a-Team编写的关于SQL到HDFS文件(Sqoop)KM的详细文章: