2016-07-12 8 views
0

Ist es möglich, den Oozie Koordinator zu konfigurieren, die einen Workflow auslösen können jede Gruppe von Dateien unter diesen Bedingungen zu verarbeiten:Oozie Coordinator Konfiguration für mehrere Datei-Dependancy

Gruppe von mir ist definiert als einfach eine Sammlung von Dateien unter einem übergeordnetes Verzeichnis. Alle xx Minuten werden Gruppen von Dateien in das entsprechende HDFS-Verzeichnis geladen. Jede Gruppe von Dateien repräsentiert Tabellen aus einer bestimmten Datenbank. Jede Dateigruppe enthält einen eigenen übergeordneten HDFS-Ordner, z. B. Database1, Database2.

Dateinamen sind alle unterschiedliche Namen in jedem Eltern-/Gruppenordnernamen. Was ich gerne hätte oozie tun (das ist, wenn es möglich ist) ist: Scan, dass alle Dateien in diesem bestimmten übergeordneten Verzeichnis existiert, jeder Dateiname wird anders sein und sind typischerweise benannt nach den Tabellen, die diese begrenzten Dateien darstellen.

Wenn alle Dateien vorhanden sind (aus einer in Oozie definierten Vorlage), führe ich den Workflow aus.

wie konfigurierbar ist oozie, meine Vermutung ist, dass es nicht so flexibel sein kann, um diese spezifische Anfrage zu behandeln, aber ich würde gerne von euch Jungs Ihre Gedanken wissen.

Meine Hände sind in Bezug auf die Änderung der Ordner/Datei-Struktur in HDFS gebunden. Ich muss die richtigen Fragen wissen, um den Verantwortlichen für die Generierung der eingehenden Dateien zu fragen.

Jeder Einblick/Erfahrung würde geschätzt werden!

Antwort

0

Aus Ihrer Abfrage scheint es, dass Sie keinen Verzeichnispfad haben, der in einem Datumsmuster endet, das zum Auslösen des Koordinators hätte verwendet werden können.

Sie können Kombination von Schalter-Funktion verwenden und Shell/java Aktion, dies zu erreichen -

1> Haben Sie Ihren Koordinator Frequenz Workflow starten sehr gering - etwa 5 min.

2> Wie Sie erwähnt haben Sie Tabellenvorlage Ich nehme an, Sie kennen bereits Tabellennamen, die in bestimmten Verzeichnissen erwartet werden. Schreiben Sie eine einfache Shell- oder Java-Aktion, um rekursiv nach diesen Verzeichnissen zu suchen, und geben Sie true zurück, wenn alle Tabellen vorhanden sind.

3> Verwendung Schalter Merkmal Workflow weiter verfahren ist, wenn alle Tabellen vorhanden ist oder Ausfahrt: -

<decision name = "table_exists"> 
    <switch> 
     <case to = "proceed_further">${wf:actionData('check_directory')['exists'] eq 'true'} 
     </case> 
    <default to = "end" /> 
    </switch> 
</decision> 

Beachten Sie, dass über check_directory Aktion ist, die in jeder Sprache in der richtigen Art und Weise geschrieben werden können, um Wert zurück. Bitte überprüfen Sie die ooziedoc oder aktualisieren Sie mich, falls Sie Hilfe benötigen, um diese Aktion zu schreiben.