将spark.local.dir设置为其他驱动器

时间:2018-10-21 17:00:36

标签: windows apache-spark

我正在尝试在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中,这意味着这不是语法或权限问题。

1 个答案:

答案 0 :(得分:2)

在Windows上,您必须设置这些环境变量

添加键值对

julia> expr_equiv(:((a + b + b) * c), :((b + a + b) * c))
true

julia> expr_equiv(:((a + a + b) * c), :((b + a + b) * c))
false

julia> expr_equiv(:(c * (a + b + b)), :((b + a + b) * c), [:+, :*])
true

查看系统环境变量