我正在尝试在 Windows 10 上设置独立的 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
如果我把这行注释掉 spark.local.dir
.conf
中的行文件,Spark 完美运行,但临时文件仍保存在我的 AppData\Local\Temp
中文件夹。所以 SPARK_LOCAL_DIRS
未读取行。
奇怪的是,如果我让它运行,它实际上会把日志放在D:/spark-tmp/log
中。 ,这意味着这不是语法或权限的问题。
请您参考如下方法:
在 Windows 上,你必须创建这些环境变量
添加键值对
SPARK_LOCAL_DIRS -> d:\spark-tmp\tmp
到你的系统环境变量