2017-07-17 3 views
1

Ich führe folgenden Hadoop-Dateisystem Shell-Befehle aus einem groovigen Skript, um Hive-generierte Dateien zu hdfs zu bewegen.Kein Fehler, aber merkwürdiges Verhalten bei der Ausführung von Hadoop File Sysem-Befehlen von groovy Skript

targetFolderPath="/data/app/2016/06/30/" 
srcFile=["/apps/hive/warehouse/customer_input.db/customer/year=2016/month=06/day=30/000000_0.txt.bz2"....] 
dst="/data/app/2016/06/30/customer_20160630_201707151297.txt.bz2" 


make_dir = " hdfs dfs -mkdir -p ${targetFolderPath} ".execute() 

copy_file = " hdfs dfs -cp ${srcFile} ${dst} ".execute() 


println (" created folder ${targetFolderPath} and copied file ${srcFile} as ${dst} ") 

Dieser Befehl wird in Schleife ausgeführt. Ich bin keine Fehler bekommen, aber starnge Verhalten

  1. Die erste Schleife ist immer korrekt

  2. Im zweiten Schleife der Ordner erstellt wird, aber Datei wird nicht kopiert.

  3. In der dritten Schleife wird weder der Ordner erstellt noch die Datei kopiert.

  4. In den folgenden Schleifen keine Ordner oder eine Datei erstellt wird,

  5. Irgendwann die Kopien Datei hat .__ Kopieren Erweiterung

Was mit dem Aufruf dieser Befehl groovy falsch sein könnte? Ist groovy nicht geeignet um Kommandozeilen auf hdfs auszuführen?

Antwort

1

Denken Sie warten müssen, für die Prozesse

hinzufügen .waitForProcessOutput() nach all Ihre .execute() Anrufe beenden

Verwandte Themen