2016-06-16 12 views
0

Ich versuche, die Tabelle mysql in hdfs zu importieren, indem shoop verwendet wird, indem ich den oozie-Workflow erstelle.Sqoop ist fehlgeschlagen, Fehlermeldung [java.lang.ClassNotFoundException: Class org.apache.oozie.action.hadoop.SqoopMain nicht gefunden]

ich kopiert haben MySQL Connector in Oozie sharelib das heißt in

/user/{username}/share/lib/lib_20150914123648/sqoop/ 

auch kopiert ich meine Sqoop-Import-Ordner, die job.properties und workflow.xml Dateien enthält.

ich in der Lage kann durch Bezugnahme https://oozie.apache.org/docs/3.1.3-incubating/DG_Examples.html

Probe MapReduce-Job auszuführen ich kann in der Lage, die den Job zu übergeben, aber es zeigt Job ist Job mit dem Fehler tötet

Sqoop failed, error message[java.lang.ClassNotFoundException: Class org.apache.oozie.action.hadoop.SqoopMain not found] 

hier ist mein Job. Eigenschaftendatei

nameNode=hdfs://localhost:9000 
jobTracker=localhost:8032 
queueName=default 
examplesRoot=sqoop-import 

oozie.wf.application.path=${nameNode}/user/${user.name}/${examplesRoot}/app/sqoop 

und das ist mein workflow.xml Datei

<action name="sqoop-node"> 
    <sqoop xmlns="uri:oozie:sqoop-action:0.2"> 
     <job-tracker>${jobTracker}</job-tracker> 
     <name-node>${nameNode}</name-node> 
     <prepare> 
      <delete path="${nameNode}/user/${wf:user()}/${examplesRoot}/output-data/sqoop"/> 
      <mkdir path="${nameNode}/user/${wf:user()}/${examplesRoot}/output-data"/> 
     </prepare> 
     <configuration> 
      <property> 
       <name>mapred.job.queue.name</name> 
       <value>${queueName}</value> 
      </property> 
     </configuration> 
     <command>import --connect jdbc:mysql://localhost:3306/test --username root --password root --table user --target-dir /user/${wf:user()}/${examplesRoot}/output-data/sqoop -m 1</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"/> 

dann startet Ich bin der Job mit dem folgenden Befehl

oozie job -oozie http://localhost:11000/oozie -config oozie-import/apps/sqoop/job.properties -run 

mir jemand kann helfen, das Problem zu lösen.

+0

fügen Sie sqoop jar zu oozie sharelib Ordner hinzu – Vishnu

+0

Sie müssen die 'stderr'- und' stdout'-Protokolle von Launcher-Job für die sqoop-Aktion überprüfen. Das gibt Ihnen den genauen Grund für das Scheitern. – YoungHobbit

+0

@vishnu - >> Bereits sqoop jar zu sharelib in hdfs hinzugefügt und der Pfad ist/user/hduser/share/liblib_20150914123648/sqoop. –

Antwort

0

Nach dem Hinzufügen der Sqoop Gläser in die sharelib, vergessen Sie nicht

Oozie Admin -sharelibupdate

mitzuteilen Oozie aufzurufen, die die sharelib geändert hat.