2016-05-04 46 views
13

Esiste un comando hdfs per elencare i file nella directory HDFS come timestamp, in ordine crescente o decrescente? Per impostazione predefinita, il comando hdfs dfs -ls fornisce un elenco non ordinato di file.Esiste un comando hdfs per elencare i file nella directory HDFS come da timestamp

Quando ho cercato le risposte, ciò che ho ottenuto è stato una soluzione, ad esempio hdfs dfs -ls /tmp | sort -k6,7. Ma c'è un modo migliore, integrato nella riga di comando hdfs dfs?

+0

-ls -t non fare il trucco? – Whitefret

+1

dal doc: http://hadoop.apache.org/docs/r2.7.0/hadoop-project-dist/hadoop-common/FileSystemShell.html#ls. 'ls -R -t (-r)' ti fornisce una lista di tutti i file trovati nell'ordine di ricerca ricorsivo dall'ultima modifica. -r è in ordine inverso – Whitefret

+0

provato su hadoop 2.6 senza successo però ... – Whitefret

risposta

24

No, non esiste altra opzione per ordinare i file in base a datetime.
Se si utilizza Hadoop versione < 2.7, si dovrà utilizzare sorta -k6,7 come si sta facendo:

hdfs dfs -ls /tmp | sort -k6,7 

E per Hadoop 2.7.x ls command, ci sono seguenti opzioni:

Usage: hadoop fs -ls [-d] [-h] [-R] [-t] [-S] [-r] [-u] <args> 

Options: 
-d: Directories are listed as plain files. 
-h: Format file sizes in a human-readable fashion (eg 64.0m instead of 67108864). 
-R: Recursively list subdirectories encountered. 
-t: Sort output by modification time (most recent first). 
-S: Sort output by file size. 
-r: Reverse the sort order. 
-u: Use access time rather than modification time for display and sorting. 

modo da poter facilmente ordinare i file:

hdfs dfs -ls -t -R (-r) /tmp