2017-08-08 1 views
0

Ich möchte den neuesten aktualisierten Ordner von einem meiner HDFS-Verzeichnisse.Ich konnte die neueste Datei in hdfs Dateisystem, aber nicht sicher, wie es für HDFS eins zu tun.Ich versuchte mit Shell Skript.Holen Sie sich den letzten aktualisierten Ordner in HDFS

+0

Wie haben Sie die neueste Datei erhalten? Sie können dasselbe Skript auch für den Ordner verwenden. – daemon12

+0

hadoop fs -ls -R/tmp/app | awk -F "" {print $ 6 "" $ 7 "" $ 8} '| sortieren -nr | Kopf -1 | cut -d "" -f3 –

+0

Die Lösung im Abschnitt Antworten ist ähnlich. Probieren Sie es aus und sehen Sie, ob es funktioniert. – daemon12

Antwort

1

Mit Hadoop 2.6, konnte ich es mit dem folgenden Befehl erhalten arbeiten:

hdfs dfs -ls -R ${DIR} | grep "^d" | sort -k6,7 | tail -1 | tr -s ' ' | cut -d' ' -f8 

wo

hdfs dfs -ls -R ${DIR}: gibt alle Verzeichnisse rekursiv

grep "^d": gibt nur Verzeichnisse

sort -k6,7: sortiert sie nach Modifikationszeit

tail -1: gibt Angebot für zuletzt geändert Verzeichnis

tr -s ' ': einige Formatierungen

cut -d' ' -f8: gibt nur Verzeichnispfad

Beispiel:

[[email protected]]$ hdfs dfs -ls -R /tmp/a 
drwxr-xr-x - hduser supergroup   0 2017-08-08 03:08 /tmp/a/b 
drwxr-xr-x - hduser supergroup   0 2017-08-08 03:11 /tmp/a/b/c 
drwxr-xr-x - hduser supergroup   0 2017-08-08 03:12 /tmp/a/b/c/CC 
-rw-r--r-- 3 hduser supergroup   0 2017-08-08 03:12 /tmp/a/b/c/CC/f2.txt 
drwxr-xr-x - hduser supergroup   0 2017-08-08 03:08 /tmp/a/b/c/d 
drwxr-xr-x - hduser supergroup   0 2017-08-08 03:08 /tmp/a/b/c/d/e 
-rw-r--r-- 3 hduser supergroup   6 2017-08-08 03:10 /tmp/a/b/c/f1.txt 

Lösung:

[[email protected]]$ hdfs dfs -ls -R /tmp/a | grep "^d" | sort -k6,7 | tail -1 | tr -s ' ' | cut -d' ' -f8 

/tmp/a/b/c/CC 
Verwandte Themen