Я запускаю большую работу в режиме кластера. Тем не менее, меня интересуют только два числа с плавающей точкой, которые я хочу как-то прочитать, когда работа преуспеет.Правильный способ записи двух поплавков в обычный txt
Вот что я пытаюсь:
from pyspark.context import SparkContext
if __name__ == "__main__":
sc = SparkContext(appName='foo')
f = open('foo.txt', 'w')
pi = 3.14
not_pi = 2.79
f.write(str(pi) + "\n")
f.write(str(not_pi) + "\n")
f.close()
sc.stop()
Однако «foo.txt» не по всей видимости, везде написано (вероятно, это будет записано в качестве исполнителя, или что-то). Я попробовал '/homes/gsamaras/foo.txt', который был бы pwd
шлюза. Однако он говорит: No such file or directory: '/homes/gsamaras/myfile.txt'
.
Как это сделать?
import os, sys
import socket
print "Current working dir : %s" % os.getcwd()
print(socket.gethostname())
предполагают, что водитель на самом деле является узлом кластера, поэтому я не вижу файл в моем шлюзе.
Возможно, каким-то образом напишите файл в HDFS?
Это не будет работать:
Traceback (most recent call last):
File "computeCostAndUnbalancedFactorkMeans.py", line 15, in <module>
f = open('hdfs://myfile.txt','w')
IOError: [Errno 2] No such file or directory: 'hdfs://myfile.txt'
Возможно, «/homes/gsamaras/foo.txt», вы пропустите главную косую черту. – citaret
Это выглядит нормально и должно быть записано на узле драйвера. Если вы сомневаетесь, просто запишите 'os.getcwd()' и 'socket.gethostname()'. – zero323
citaret, опечатка! :) @ zero323 получается, что мой шлюз не мой драйвер, вот почему это не сработает ... Посмотрите мое редактирование! – gsamaras