Настройка spark.local.dir в Pyspark / Jupyter - PullRequest
0 голосов
/ 29 июня 2018

Я использую Pyspark из записной книжки Jupyter и пытаюсь записать большой набор данных для паркета в S3.
Я получаю сообщение об ошибке «на устройстве не осталось места». Я искал вокруг и узнал, что это потому, что / tmp заполняется.
Теперь я хочу отредактировать spark.local.dir, чтобы он указывал на каталог, в котором есть пробел.
Как я могу установить этот параметр?
Большинство решений, которые я нашел, предлагали установить его при использовании spark-submit. Однако я не использую spark-submit, а просто запускаю его как скрипт от Jupyter.

Редактировать: я использую Sparkmagic для работы с бэкэндом EMR. Я думаю, что spark.local.dir должен быть установлен в конфигурации JSON, но я не уверен, как его там указать.
Я попытался добавить его в session_configs, но это не сработало.

1 Ответ

0 голосов
/ 29 июня 2018

Ответ зависит от того, откуда ваш SparkContext.

Если вы запускаете Jupyter с pyspark:

PYSPARK_DRIVER_PYTHON='jupyter'\
PYSPARK_DRIVER_PYTHON_OPTS="notebook" \
PYSPARK_PYTHON="python" \
pyspark

тогда ваш SparkContext уже инициализируется, когда вы получаете ядро ​​Python в Jupyter. Поэтому вы должны передать параметр в pyspark (в конце приведенной выше команды): --conf spark.local.dir=...

Если вы создаете SparkContext в Python

Если у вас есть код в вашей записной книжке, например:

import pyspark
sc = pyspark.SparkContext()

, затем вы можете настроить контекст Spark перед его созданием:

import pyspark
conf = pyspark.SparkConf()
conf.set('spark.local.dir', '...')
sc = pyspark.SparkContext(conf=conf)

Настройка Spark из командной строки:

Также можно настроить Spark, отредактировав файл конфигурации в bash. Файл, который вы хотите отредактировать, - ${SPARK_HOME}/conf/spark-defaults.conf. Вы можете добавить к нему следующее (создав его, если он не существует):

echo 'spark.local.dir /foo/bar' >> ${SPARK_HOME}/conf/spark-defaults.conf
...