Ho una directory di directory su HDFS e voglio scorrere le directory. C'è un modo semplice per farlo con Spark usando l'oggetto SparkContext?Spark iterate Directory HDFS
risposta
È possibile utilizzare org.apache.hadoop.fs.FileSystem
. In particolare, FileSystem.listFiles([path], true)
E con Spark ...
FileSystem.get(sc.hadoopConfiguration()).listFiles(..., true)
Perfetto, grazie. – Jon
davvero bello! [Ho avuto questa domanda] (http://stackoverflow.com/questions/34738296/spark-spark-submit-jars-arguments-wants-comma-list-how-to-declare-a-directory/35550151#35550151), concesso, immagino che questo non funzionerebbe nella chiamata originale di spark-submit – JimLohse
Come posso creare un elenco di file usando RemoteIterator che questo crea? – horatio1701d
import org.apache.hadoop.fs.{FileSystem,Path}
FileSystem.get(sc.hadoopConfiguration).listStatus(new Path("hdfs:///tmp")).foreach(x => println(x.getPath))
questo ha funzionato per me.
Spark versione 1.5.0-cdh5.5.2
Si può provare con lo status globStatus così
val listStatus = org.apache.hadoop.fs.FileSystem.get(new URI(url), sc.hadoopConfiguration).globStatus(new org.apache.hadoop.fs.Path(url))
for (urlStatus <- listStatus) {
println("urlStatus get Path:"+urlStatus.getPath())
}
Ecco versione PySpark se qualcuno è interessato:
hadoop = sc._jvm.org.apache.hadoop
fs = hadoop.fs.FileSystem
conf = hadoop.conf.Configuration()
path = hadoop.fs.Path('/hivewarehouse/disc_mrt.db/unified_fact/')
for f in fs.get(conf).listStatus(path):
print f.getPath()
In questo particolare caso ottengo l'elenco di tutti i file che compongono la tabella Hive disc_mrt.unified_fact.
Altri metodi di oggetto FileStatus, come getLen() per ottenere le dimensioni del file sono descritte qui:
- 1. Cicli attraverso le directory hdfs
- 2. Usa Spark per elencare tutti i file in una directory Hadoop HDFS?
- 3. Pyspark: recupera file/directory sul percorso HDFS
- 4. Verificando directory in HDFS esiste o no
- 5. Come navigare le directory in Hadoop HDFS
- 6. Errore HDFS: "input": nessun file o directory
- 7. Impossibile leggere un file da HDFS utilizzando Spark
- 8. Spark modalità Standalone: Come comprimere uscita scintilla scritto HDFS
- 9. Esiste un comando hdfs per elencare i file nella directory HDFS come da timestamp
- 10. Ricerca di directory più vecchie di N giorni in HDFS
- 11. .sparkstaging in hdfs non viene eliminata
- 12. Iterate su tutti i file in una directory utilizzando BOOST_FOREACH
- 13. Iterate un grande insieme di file in una directory
- 14. apache spark, "impossibile creare qualsiasi directory locale"
- 15. scrivere un RDD in HDFS in un contesto di spark-streaming
- 16. Perché spark-shell lancia ArrayIndexOutOfBoundsException durante la lettura di un file di grandi dimensioni da HDFS?
- 17. Perché la partizione Spark RDD ha un limite di 2 GB per HDFS?
- 18. Spark Filati Architettura
- 19. Apache Spark Stderr e Stdout
- 20. Fattore di replica HDFS
- 21. CloudStore vs. HDFS
- 22. Trasferimento file da HDFS
- 23. Unione di file hdfs
- 24. Qual è la posizione HDFS su Hadoop?
- 25. Come trovare la directory di installazione di Spark?
- 26. spark ssc.textFileStream non streamining alcun file dalla directory
- 27. In che modo Spark on Yarn memorizza i file mescolati?
- 28. supporto gzip in Spark
- 29. Iterate attraverso l'hashmap nidificato
- 30. backbone.js iterate una raccolta
vuoi dire 'iterare' come ottenere l'elenco di sub-directory e file all'interno? o ottenere tutti i file in tutte le sottodirectory? – maasg
Iterare come in elenco tutte le sottodirectory. Ogni sottodirectory contiene un gruppo di file di testo che desidero elaborare in modi diversi. – Jon