Я использую PySpark с Ipython в последнее время на моем сервере с 24 процессорами и 32 ГБ оперативной памяти. Он работает только на одной машине. В моем процессе я хочу собирать огромное количество данных, как показано ниже:
train_dataRDD = (train.map(lambda x:getTagsAndText(x))
.filter(lambda x:x[-1]!=[])
.flatMap(lambda (x,text,tags): [(tag,(x,text)) for tag in tags])
.groupByKey()
.mapValues(list))
Когда я делаю
training_data = train_dataRDD.collectAsMap()
Это дает мне outOfMemory Error. Java heap Space
. Кроме того, я не могу выполнять какие-либо операции с Spark после этой ошибки, поскольку он теряет соединение с Java. Он дает Py4JNetworkError: Cannot connect to the java server
.
Похоже, пустое место маленькое. Как я могу установить его на большие пределы?
ИЗМЕНИТЬ
Вещи, которые я пробовал до запуска:
sc._conf.set('spark.executor.memory','32g').set('spark.driver.memory','32g').set('spark.driver.maxResultsSize','0')
Я изменил параметры искры в соответствии с документацией здесь (если вы делаете ctrl-f и ищете spark.executor.extraJavaOptions): http://spark.apache.org/docs/1.2.1/configuration.html
В нем говорится, что я могу избежать OOM, установив параметр spark.executor.memory. Я сделал то же самое, но, похоже, он не работает.