Ich weiß, ich kann dies tun:Hier finden Sie eine Liste von Unterverzeichnissen
data = sc.textFile('/hadoop_foo/a')
data.count()
240
data = sc.textFile('/hadoop_foo/*')
data.count()
168129
Allerdings würde Ich mag die Größe der Daten jedes Unterverzeichnis zählen von „/ hadoop_foo /“. Kann ich das machen?
Mit anderen Worten, was ich will, ist so etwas wie diese:
subdirectories = magicFunction()
for subdir in subdirectories:
data sc.textFile(subdir)
data.count()
ich versuchte:
In [9]: [x[0] for x in os.walk("/hadoop_foo/")]
Out[9]: []
aber ich denke, das fehlschlägt, weil es auf dem lokalen Verzeichnis sucht des Treibers (in diesem Fall das Gateway), während "/ hadoop_foo /" in der hdfs liegt. Das gleiche gilt für "hdfs: /// hadoop_foo /".
Nach How can I list subdirectories recursively for HDFS? lesen, ich frage mich, ob es einen Weg gibt auszuführen ist:
hadoop dfs -lsr /hadoop_foo/
in Code ..
Von Correct way of writing two floats into a regular txt:
In [28]: os.getcwd()
Out[28]: '/homes/gsamaras' <-- which is my local directory
Ist der [tag: java] oder [tag: Python]? Ich benutze [tag: python]. Auch ist nicht klar was folgt, ein Link? Ich meine was ich genau in meinem Code machen soll? 'subprocess.call (["/hadoop_foo/"])' sagt, dass es die Hauptklasse 'dfs' nicht finden kann. Gleiches mit 'fs' anstelle von' dfs'. Ich habe auch "hadoop dfs" im 1. Teil ausprobiert und habe 'OSError: [Errno 2] Keine solche Datei oder Verzeichnis erhalten. – gsamaras
Bearbeitete die Antwort, um Python-Möglichkeiten zum rekursiven Abrufen von Dateien bereitzustellen. – patrungel
Ich sah es, danke. 'Kein Modul namens hdfs', ich bin verloren .. '_', aber +1 für die Bereitstellung von Optionen! Wenn Sie die Frage auffrischen möchten, um mehr Leute hierher zu bringen, kann das vielleicht helfen! :) – gsamaras