2016-05-03 5 views
0

Ich versuche, auf HDFS von Python zu schreiben. Gerade jetzt, ich bin mit https://hdfscli.readthedocs.io/en/latest/quickstart.html aber für große Datei erhalte ich zurück:Schreiben auf HDFS mit Python

File "/home/edge7/venv-dev/local/lib/python2.7/site-packages/hdfs/client.py", line 400, in write 
    consumer(data) 
    File "/home/edge7/venv-dev/local/lib/python2.7/site-packages/hdfs/client.py", line 394, in consumer 
    auth=False, 
    File "/home/edge7/venv-dev/local/lib/python2.7/site-packages/hdfs/client.py", line 179, in _request 
    **kwargs 
    File "/home/edge7/venv-dev/local/lib/python2.7/site-packages/requests/sessions.py", line 465, in request 
    resp = self.send(prep, **send_kwargs) 
    File "/home/edge7/venv-dev/local/lib/python2.7/site-packages/requests/sessions.py", line 573, in send 
    r = adapter.send(request, **kwargs) 
    File "/home/edge7/venv-dev/local/lib/python2.7/site-packages/requests/adapters.py", line 415, in send 
    raise ConnectionError(err, request=request) 
requests.exceptions.ConnectionError: ('Connection aborted.', gaierror(-2, 'Name or service not known')) 

zum Schreiben Mein Code ist ziemlich einfach:

client = InsecureClient('http://xxxxxxx.co:50070', user='hdfs') 
client.write("/tmp/a",stringToWrite) 

Wer ein ordentliches Paket auf HDFS schreiben vorschlagen kann? Cheers

+0

Sind Sie sicher, dass Sie über den Hostnamen auf das Gerät zugreifen können und sicher sind, dass der Port 50070 geöffnet ist? –

+0

ja, es schreibt für eine Weile aber plötzlich aufhören und ich bekomme den obigen Fehler –

+0

Ich würde auf ein DNS-Problem wetten. Es klingt wie der Host-Name eines Ihrer Daten ist nicht auflösbar. Alles würde gut funktionieren, bis Ihr Nameode Ihre App anweist, einen Block an den Datenknoten mit dem nicht auflösbaren Namen zu schreiben. – highlycaffeinated

Antwort

0

Für den Stacktrace scheint es sicherheitsrelevant zu sein. Sind Sie sicher, dass Sie den InsecureClient und nicht den Kerberos verwenden müssen ?. Denken Sie auch daran, dass die Bibliothek nur eine Bindung für HttpFs darstellt. Wenn Sie also einen manuellen Test mit Postman oder CURL durchführen, können Sie jedes Problem clusterseitig debuggen.