3

我正在使用 Jupyter 笔记本中的 Pyspark,并尝试将大型镶木地板数据集写入 S3。
我收到“设备上没有剩余空间”错误。我四处搜寻,得知这是因为 /tmp 已满。
我现在想编辑spark.local.dir以指向一个有空间的目录。
如何设置此参数?
我发现的大多数解决方案都建议在使用 spark-submit 时进行设置。但是,我没有使用 spark-submit,只是将它作为 Jupyter 的脚本运行。

编辑:我正在使用 Sparkmagic 来处理 EMR 后端。我认为spark.local.dir需要在配置 JSON 中进行设置,但我不确定如何在此处指定它。
我尝试添加它,session_configs但它没有工作。

4

1 回答 1

0

答案取决于你SparkContext来自哪里。

如果您使用以下方式启动 Jupyter pyspark

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

那么当您在 Jupyter 中收到 Python 内核时,您的 SparkContext 已经初始化。因此,您应该将参数传递给 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:

也可以通过在 bash 中编辑配置文件来配置 Spark。您要编辑的文件是${SPARK_HOME}/conf/spark-defaults.conf. 您可以按如下方式附加到它(如果它不存在则创建它):

echo 'spark.local.dir /foo/bar' >> ${SPARK_HOME}/conf/spark-defaults.conf
于 2018-06-29T01:00:43.093 回答