我正在尝试在 Windows 10 上设置独立的 Spark。我想设置 spark.local.dirD:\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  

到你的系统环境变量


评论关闭
IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!