分享

Main class [org.apache.oozie.action.hadoop.SqoopMain], exit code [1]

feature09 发表于 2017-11-2 19:09:34 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 4 11932
oozie报错:
Main class [org.apache.oozie.action.hadoop.SqoopMain], exit code [1]


这个就是报这个错误的workflow.xml:
<workflow-app xmlns="uri:oozie:workflow:0.5" name="workflow-ooziesqoop-test1">

        <start to="startwork"/>
       
        <action name="startwork">
       
                <sqoop xmlns="uri:oozie:sqoop-action:0.2">
               
                        <job-tracker>${jobTracker}</job-tracker>
                        <name-node>${nameNode}</name-node>
                       
                        <configuration>
                                <property>
                                        <name>mapred.job.queue.name</name>
                                        <value>${queueName}</value>
                                </property>
                        </configuration>
               
                        <command>import --options-file sqoopcommand.txt</command>
                       
                        <file>/qpf/oozie/oozie-sqoop-test1/${EXEC}#${EXEC}</file>
                </sqoop>
               
                <ok to="end"/>
                <error to="fail"/>
        </action>
       
        <kill name="fail">
                <message>Java failed,error message[$wf:errorMessage(wf:lastErrorNode())]</message>
        </kill>
       
        <end name="end"/>
</workflow-app>

当我把上述的workflow.xml更改一下,主要更改红色的部分,也就是sqoop执行方式的不同上。
<workflow-app xmlns="uri:oozie:workflow:0.5" name="workflow-oozie-test3">


<start to="sqoop-node"/>


<action name="sqoop-node">


        <sqoop xmlns="uri:oozie:sqoop-action:0.2">
       
        <job-tracker>${jobTracker}</job-tracker>
        <name-node>${nameNode}</name-node>
       
        <configuration>
                <property>
                        <name>mapred.job.queue.name</name>
                        <value>${queueName}</value>
                </property>
        </configuration>
       
        <command>import --connect jdbc:mysql://172.20.1.54:3306/test --username admin --password 123123 --table tb_account --columns user_name,tel -m 1 --target-dir /qpf/oozie/output-test3</command>
       
        </sqoop>
       
        <ok to="end"/>
    <error to="fail"/>
</action>


<kill name="fail">
    <message>Sqoop failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
</kill>


<end name="end"/>


</workflow-app>



第二个就可以执行成功。


第一个workflow中的sqoop命令,单独在本地操作sqoop --options-file sqoopcommand.txt命令执行是没有问题的。也就是第一个中的sqoopcommand.txt是没问题的。


现在在oozie页面上看,可以看到是失败的。在external ID进去的话,可以看到map是执行成功的。。。


只有查看workflow日志才能看到点东西,其中有几段是这样的,我感觉是红色部分的问题。
2017-11-02 17:52:54,882 INFO org.apache.oozie.command.wf.WorkflowNotificationXCommand: SERVER[yhml01cs002] USER[-] GROUP[-] TOKEN[-] APP[-] JOB[0000036-171031092821482-oozie-oozi-W] ACTION[0000036-171031092821482-oozie-oozi-W@:start:] No Notification URL is defined. Therefore nothing to notify for job 0000036-171031092821482-oozie-oozi-W@:start:


不知道该如何解决,求大神给点建议啊啊啊,
谢谢啦

已有(4)人评论

跳转到指定楼层
easthome001 发表于 2017-11-2 20:03:06
把这部分放到文件中 sqoopcommand.txt

import --connect jdbc:mysql://172.20.1.54:3306/test --username admin --password 123123
其余部分放到command里面。

##########################
下面举例:
一、oozie调度sqoop直接导数入hive --全量
    [mw_shl_code=bash,true]import --hive-import --connect jdbc:oracle:thin:@192.168.1.8:1521:ORCL --username SCOTT --password tiger --table STUDENT -m 1[/mw_shl_code]        
二、oozie调度sqoop直接导数入hive --增量
import --hive-import --connect jdbc:oracle:thin:@192.168.1.8:1521:ORCL --username SCOTT --password tiger  -m 1 --table STUDENT --check-column SID --incremental append --last-value 4

若要用配置文件
[mw_shl_code=bash,true] --options-file importoracle.txt --table STUDENT --check-column SID --incremental append --last-value 0
[/mw_shl_code]            
importoracle.txt
[mw_shl_code=bash,true]#importoracle.txt
#
# Options file for Sqoop import
#

# Specifies the tool being invoked
import
--hive-import

# Connect parameter and value
--connect
jdbc:oracle:thin:@192.168.1.8:1521:ORCL

# Username parameter and value
--username
SCOTT

# password parameter and value
--password
tiger

# m
-m
1
#
# Remaining options should be specified in the command line.
#[/mw_shl_code]


回复

使用道具 举报

feature09 发表于 2017-11-3 15:35:40
easthome001 发表于 2017-11-2 20:03
把这部分放到文件中 sqoopcommand.txt

import --connect jdbc:mysql://172.20.1.54:3306/test --usernam ...

哎,不清楚为什么。我还是不可以。

workflow中是这样的:
<command>import --options-file sqoopcommand.txt --table tb_account --columns user_name,tel --append --target-dir /qpf/output-test2</command>

脚本是:
import

--connect
jdbc:mysql://172.20.1.54:3306/test

--username
admin

--password
123123

-m
1


错误跟之前的一样,整体是失败的,但是map是成功的。

我还试了command中放绝对路径的脚本。
workflow中
<command>import --options-file ${sqoopcommand}</command>
在job.properties中指定这个sqoopmand.txt的绝对路径
sqoopcommand=${nameNode}/qpf/oozie/oozie-sqoop-test1/sqoopcommand.txt


这个也是错误的,EL_ERROR   variable [sqoop] cannot be resolved

大神再给点思路呗,谢谢啦
回复

使用道具 举报

easthome001 发表于 2017-11-7 14:58:26
feature09 发表于 2017-11-3 15:35
哎,不清楚为什么。我还是不可以。

workflow中是这样的:

说明一个问题,错不在这里。首先确保oozie是没有问题的,然后看看其它配置及设置。
回复

使用道具 举报

nextuser 发表于 2017-11-7 15:11:52
本帖最后由 nextuser 于 2017-11-7 15:19 编辑

用的是hive吗?
看看是不是缺包导致的。
也可能是权限导致的,map是可以分割的,但是在拉取数据的时候,有些用户可能没有权限去拉取别的机器的数据,所以导致这个问题。而且你在本地操作是没有问题的,说明命令没有问题。所以可能是权限。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条