Speichern, JSON, HDFS mit python
Habe ich ein python-script, das derzeit greift auf eine API gibt JSON. Es nimmt dann den JSON-string und speichert es als eine Datei auf dem lokalen Dateisystem, auf dem ich dann verschieben Sie Sie in HDFS manuell. Ich möchte dies ändern also mein python-Skript speichern direkt in HDFS statt des Schlagens das lokale Dateisystem, die erste. Ich bin versucht derzeit, speichern Sie die Datei mithilfe von HDFS und DFS-Befehl, aber ich glaube nicht, dass der copy-Befehl ist der richtige Weg, dies zu tun, weil es nicht eine Datei, sondern ein JSON-string, wenn ich versuche, es zu retten.
Aktuellen Code
import urllib2
import json
import os
f = urllib2.urlopen('RESTful_API_URL.json')
json_string = json.loads(f.read().decode('utf-8'))
with open('\home\user\filename.json', 'w') as outfile:
json.dump(json_string,outfile)
Neuen Code
f = urllib2.urlopen('RESTful_API_URL.json')
json_string = json.loads(f.read().decode('utf-8'))
os.environ['json_string'] = json.dump(json_string)
os.system('hdfs dfs -cp -f $json_string hdfs/user/test')
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, das problem ist das gleiche mit diesem thread Stream-Daten in hdfs direkt, ohne Sie zu kopieren.
Erstens, können Sie mit diesem Befehl umleiten von stdin nach hdfs-Datei,
Dann tun Sie dies in python,
Werfen Sie einen Blick auf das HDFS-Befehl put auf http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/FileSystemShell.html#put
Können Sie setzen, um HDFS-von der Befehlszeile aus mithilfe von standard-in mit syntax wie der folgenden (
-put -
bedeutet, Lesen Sie von der Standardeingabe (stdin).Wenn Sie diesen Befehl ausführen, als ein sub-Prozess innerhalb Ihrer python-code, Sie sollten in der Lage sein Rohr Ihre json-string an den sub-Prozess.