2014-10-22 11 views
11

ich folgende Verzeichnisstruktur in HDFS mit,prüft Verzeichnis in HDFS bereits vorhanden ist oder nicht

/analysis/alertData/logs/YEAR/MONTH/DATE/HOURS 

, dass die Daten auf houly Basis kommen und im Format Jahr/Monat/Tag/Stunde gespeichert.

Ich habe einen Shell-Skript geschrieben, in dem ich Pfad bin vorbei bis

"/analysis/alertData/logs" (this will vary depending on what product of data i am handling) 

dann durch das Jahr/Monat Skript gehe Shell/Datum/Stunde Ordner und gibt den meisten neuesten Weg.

Zum Beispiel:

Directories present in HDFS has following structure: 

/analysis/alertData/logs/2014/10/22/01 
/analysis/alertData/logs/2013/5/14/04 

shell script is given path till : " /analysis/alertData/logs " 

it outputs most recent directory : /analysis/alertData/logs/2014/10/22/01 

Meine Frage hier ist, wie kann ich überprüfen, ob HDFS Verzeichnispfad Skript gültig ist oder nicht, Shell übergeben. Sagen wir, ich übergebe einen falschen Pfad als Eingabe oder Pfad, der nicht existiert, also wie man das im Shell-Skript behandelt.

Probe falscher Weg kann sein:

wrong path : /analysis/alertData (correct path : /analysis/alertData/logs/) 
    wrong path : /abc/xyz/ (path does not exit in HDFS) 

ich versuchte, mit Hadoop dfs -test -z/d/-en Optionen nicht für mich gearbeitet haben. Irgendein Vorschlag dafür.

HINWEIS: Nicht meine ursprünglichen Code hier posten, da die Lösung für mein Problem nicht davon abhängt.

Vielen Dank im Voraus.

Antwort

3

Hallo Ich habe folgendes Skript verwendet, um zu testen, ob das HDFS-Verzeichnis existiert oder nicht. Ich habe in deiner Frage gesehen, dass du diesen Testbefehl ausprobiert hast und nicht funktioniert hast. Könnten Sie dies nicht funktioniert jede Spur auf, warum ..

hadoop fs -test -d $dirpath 
    if [ $? != 0 ] 
      then 
       hadoop fs -mkdir $dirpath 
       else 
        echo "Directory already present in HDFS" 
    fi 
7

Seit

hadoop fs -test -d $yourdir 

return 0, wenn vorhanden, dann

if [$? == 0]; then 
    echo "exists" 
else 
    echo "not exists" 
fi 
16

Try w/o Testbefehl geben Sie bitte []:

if $(hadoop fs -test -d $yourdir) ; then echo "ok";else echo "not ok"; fi 
2

Hadoop fs ist veraltet Verwendung: hdfs dfs -test - [ezd] URI

Optionen: Die Option -e prüft, ob die Datei vorhanden ist, und gibt 0 zurück, wenn sie wahr ist. Die Option -z prüft, ob die Datei die Länge 0 hat und gibt 0 zurück, wenn sie wahr ist. Die Option -d überprüft, ob es sich bei dem Pfad um ein Verzeichnis handelt, und gibt 0 zurück, wenn es wahr ist. Beispiel: hdfs dfs -test -d $ yourdir

Überprüfen Sie bitte die folgenden für weitere Informationen: https://hadoop.apache.org/docs/r2.4.1/hadoop-project-dist/hadoop-common/FileSystemShell.html Grüße

0

In Java können wir dies überprüfen, indem Filesystem-Klasse.

FileSystem

Verwandte Themen