我正在尝试在Windows10上设置独立的Spark。我想设置
spark.local.dir
到
D:\spark-tmp\tmp
,目前它似乎正在使用
C:\Users\<me>\AppData\Local\Temp
,在我的例子中,它位于一个SSD驱动器上,考虑到某些数据集的大小,该驱动器可能没有足够的空间。
所以我更改了文件
%SPARK_HOME%\conf\spark-defaults.conf
到下面,没有成功
spark.eventLog.enabled true
spark.eventLog.dir file:/D:/spark-tmp/log
spark.local.dir file:/D:/spark-tmp/tmp
我也试着跑
%HADOOP_HOME\bin\winutils.exe chmod -R 777 D:/spark-tmp
但是没有改变。
我得到的错误如下:
java.io.IOException: Failed to create a temp directory (under file:/D:/spark-tmp/tmp) after 10 attempts!
如果我以
file://D:/...
(注意双斜线)什么都没变。如果我删除了这个方案,另一个例外就是这个方案
D:
无法识别。
我还注意到这个警告:
WARN SparkConf:66 - In Spark 1.0 and later spark.local.dir will be overridden by the value set by the cluster manager (via SPARK_LOCAL_DIRS in mesos/standalone and LOCAL_DIRS in YARN).
所以我试着把下一行写进去
%SPARK_HOME%\conf\spark-env.sh
:
SPARK_LOCAL_DIRS=file:/D:/spark-tmp/tmp
如果我把这行和评论
斯帕克
线在
.conf
文件,spark工作正常,但临时文件仍保存在我的
AppData\Local\Temp
文件夹。所以
SPARK_LOCAL_DIRS
未读取行。
奇怪的是,如果我让它运行,它实际上会把日志放进去
D:/spark-tmp/log
这意味着它不是语法或权限问题。