Настройка spark.local.dir в Pyspark/Jupyter

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

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


person c3p0    schedule 29.06.2018    source источник


Ответы (1)


Ответ зависит от того, откуда ваш 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
person Tim    schedule 29.06.2018
comment
Извините, надо было уточнить. Я использую Sparkmagic для подключения к кластеру EMR. Я обновлю вопрос. - person c3p0; 29.06.2018
comment
установка PYSPARK_DRIVER_PYTHON='jupyter' - действительно плохая практика - см. здесь как правильно использовать Jupyter с Pyspark - person desertnaut; 30.06.2018
comment
Я попытался установить конфигурацию с помощью conf.set('spark.local.dir','/mymountedspace'), но выдает ошибку. ОШИБКА: root: исключение при отправке команды. py4j.protocol.Py4JNetworkError: ответ со стороны Java пуст Py4JError: произошла ошибка при вызове None.org.apache.spark.api.java.JavaSparkContext - person Raj006; 27.01.2019
comment
Плевать на ошибку. Это произошло из-за проблемы с разрешениями. Как только я изменил владельца своей учетной записи, это сработало. - person Raj006; 27.01.2019