我正在从Jupyter笔记本中使用Pyspark,并尝试将大型实木复合地板数据集写入S3。
我收到“设备上没有剩余空间”错误。我四处搜寻,发现这是因为/ tmp填满了。
我现在想编辑spark.local.dir
指向一个有空间的目录。
如何设置此参数?
我发现大多数解决方案都建议在使用spark-submit时进行设置。但是,我没有使用spark-submit,而只是从Jupyter将其作为脚本运行。
编辑:我正在使用Sparkmagic与EMR后端配合使用。我认为需要在JSON配置文件中设置spark.local.dir
,但不确定如何在其中进行指定。
我尝试在session_configs
中添加它,但是没有用。
答案 0 :(得分:0)
答案取决于您的SparkContext
的来源。
如果您使用pyspark
启动Jupyter:
PYSPARK_DRIVER_PYTHON='jupyter'\
PYSPARK_DRIVER_PYTHON_OPTS="notebook" \
PYSPARK_PYTHON="python" \
pyspark
然后,当您在Jupyter中收到Python内核时,您的SparkContext已经被初始化。因此,您应该将参数传递给pyspark(在以上命令的末尾):--conf spark.local.dir=...
如果要在Python中构建SparkContext
如果您的笔记本中有以下代码:
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