2013-04-01 16 views
6

Ich habe einen Oozie-Workflow, läuft auf einem CDH4-Cluster von 4 Maschinen (ein Meister-für-alles, drei "dumme" Arbeiter). Der Hive-Metastore läuft auf dem Master mit Hilfe von mysql (Treiber ist vorhanden), der Oozie-Server läuft auch auf dem Master mit mysql. Mit der Webschnittstelle kann ich die Struktur wie erwartet importieren und abfragen, aber wenn ich die gleichen Abfragen in einem oozie-Workflow mache, schlägt das fehl. Auch das Hinzufügen der "IF EXISTS" führt zu dem Fehler unten. Ich habe versucht, die Verbindungsinformationen als Eigenschaften zum Hive-Job ohne Erfolg hinzuzufügen.Oozie Workflow: Hive-Tabelle nicht gefunden, aber es existiert

Kann mir jemand einen Tipp geben? Habe ich etwas vergessen? Weitere Informationen benötigt?

Dies ist die Ausgabe des Protokolls Job:

Script [drop.sql] content: 
    ------------------------ 
    DROP TABLE IF EXISTS performance_log; 

    ------------------------ 

    Hive command arguments : 
    -f 
    drop.sql 

    ================================================================= 

    >>> Invoking Hive command line now >>> 

    Intercepting System.exit(10001) 

    <<< Invocation of Main class completed <<< 

    Failing Oozie Launcher, Main class [org.apache.oozie.action.hadoop.HiveMain], exit code [10001] 

    Oozie Launcher failed, finishing Hadoop job gracefully 

Und dies ist die Fehlermeldung:

FAILED: SemanticException [Error 10001]: Table not found performance_log 
    Intercepting System.exit(10001) 
    Failing Oozie Launcher, Main class [org.apache.oozie.action.hadoop.HiveMain], exit code [10001] 
+0

Dieser Hue Blogpost zeigt, wie [eine Hive-Aktion ausführen] (http://gethue.tumblr.com/post/60937985689/ hadoop-tutorials-ii-2-Ausführen-Hive-Abfragen-und) in einem Oozie Workflow. – Romain

Antwort

12

Das Problem ist, andere Knoten nicht wissen, wo Ihr MYSQL ist, Sie so werden Fehler Tabelle nicht gefunden.

Sie müssen zwei Dinge tun

  1. Copy hive-site.xml im Oozie Workflow-Verzeichnis
  2. In Ihrer Hive Aktion Oozie sagen, dass meinen Bienenstock-site.xml verwendet

So etwas wie unten

action name="hive-node"> <hive xmlns="uri:oozie:hive-action:0.2"> <job-tracker>${jobTracker}</job-tracker> <name-node>${nameNode}</name-node> <job-xml>hive-site.xml</job-xml>

diese sollte arbeiten.

Dank

+0

Ich versuche es –

+0

Funktioniert wie ein Charme. Vielen Dank! –

+1

Wenn Sie im Farbton sind, denken Sie daran, dies in den Workflow-Eigenschaften zu tun, damit es auf alle Stockknoten/Schritte im Workflow angewendet wird. –

0

ich gleiche Problem erlebt haben, abgesehen von oben erwähnt Lösung über richtig hive-site.xml angeben. Ich würde empfehlen, die folgenden Dinge auch.

  1. überprüfen Sie, ob Sie mysql Connector jar (falls Sie mysql als Metastree verwenden) in Classpath verfügbar ist.
  2. im Falle von Oozie Bienenstock Aktionen einfach überprüfen, ob Sie Bienenstock Gläser nicht mehrmals hinzufügen. z.B. es ist bereits in oozie teilen lib und Sie haben auch in Workflow/lib kopiert
Verwandte Themen