Support Questions

Find answers, ask questions, and share your expertise
Announcements
Celebrating as our community reaches 100,000 members! Thank you!

what is xmlns in oozie workflows?

avatar
Expert Contributor
What exactly is xmls attribute in oozie workflows? 

I am trying to run a sqoop command but I keep getting

ava.lang.ClassNotFoundException: Class org.apache.oozie.action.hadoop.SqoopMain not found

Now, I have tried everything suggested. Set the permissions right. Have /share/lib in /user/oozie.

Running oozie jobs from oozie user only.

Just wondering if xmlns could be the problem? I am using ambari.

This is what I get when I check my versions:

sqoop version
Warning: /usr/hdp/2.4.0.0-169/hbase does not exist! HBase imports will fail.
Please set $HBASE_HOME to the root of your HBase installation.
Warning: /usr/hdp/2.4.0.0-169/accumulo does not exist! Accumulo imports will fail.
Please set $ACCUMULO_HOME to the root of your Accumulo installation.
16/05/04 12:54:07 INFO sqoop.Sqoop: Running Sqoop version: 1.4.6.2.4.0.0-169
Sqoop 1.4.6.2.4.0.0-169
git commit id c327581e17e308322d77a2ae245d0287c0e488d4
Compiled by jenkins on Wed Feb 10 08:35:28 UTC 2016
[oozie@warehouse root]$ oozie version
Oozie client build version: 4.2.0.2.4.0.0-169

My workflow has;

<workflow-app name="once-a-day" xmlns="uri:oozie:workflow:0.1">
<start to="sqoopAction"/>
        <action name="sqoopAction">
                <sqoop xmlns="uri:oozie:sqoop-action:0.2">
                        <job-tracker>${jobTracker}</job-tracker>
                        <name-node>${nameNode}</name-node>
                    <command>list-tables --connect jdbc:mysql://FQDN/erp --username hive --password hive
                    </command>
                   <archive>/lib/mysql-connector-java-5.1.38-bin.jarz#mysql-connector-java-5.1.38-bin.jar</archive>
                </sqoop>
                <ok to="end"/>
                <error to="killJob"/>
        </action>
<kill name="killJob">
            <message>"Killed job due to error: ${wf:errorMessage(wf:lastErrorNode())}"</message>
        </kill>
<end name="end" />
</workflow-app>

job.props:

nameNode=hdfs://FQDN:8020
jobTracker=FQDN:8050
queueName=default
oozie.libpath=/user/oozie/share/lib/, /user/oozie/share/lib/lib_20160427195409
oozie.use.system.libpath=true
oozie.wf.application.path=${nameNode}/user/${user.name}/scheduledimport
start=2016-04-26T00:00Z
end=2016-12-31T00:00Z
workflowAppUri=${nameNode}/user/${user.name}/scheduledimport
1 ACCEPTED SOLUTION

avatar
Master Guru

xmlns stands for XML Name Space, you can find general introduction here. In Oozie workflows there are 2 xmlns specified, the one on top:

<workflow-appname="once-a-day"xmlns="uri:oozie:workflow:0.1">

defines XML tags for Oozie workflow files in general. The other one:

<sqoop xmlns="uri:oozie:sqoop-action:0.2">

defines XML tags specific to Sqoop action, you can find its definition here. In your case xmlns is not a problem. If it were Oozie would reject your workflow xml file as incorrect, for example, because of using non-existent tags, or existent ones in a wrong way.

View solution in original post

1 REPLY 1

avatar
Master Guru

xmlns stands for XML Name Space, you can find general introduction here. In Oozie workflows there are 2 xmlns specified, the one on top:

<workflow-appname="once-a-day"xmlns="uri:oozie:workflow:0.1">

defines XML tags for Oozie workflow files in general. The other one:

<sqoop xmlns="uri:oozie:sqoop-action:0.2">

defines XML tags specific to Sqoop action, you can find its definition here. In your case xmlns is not a problem. If it were Oozie would reject your workflow xml file as incorrect, for example, because of using non-existent tags, or existent ones in a wrong way.