我知道有關於Spark的臨時文件like this one的一些問題,但我找不到解決我的問題的文件。Spark臨時文件 - snappy
我在獨立模式下使用Spark 1.6.0,我在Windows下運行它,所以當我在每個worker上設置SPARK_LOCAL_DIRS
時,這會給出臨時文件寫入的信息。儘管如此,我收到了一個奇怪的行爲snappy
。事實上,無論我嘗試了什麼,每個執行者都會將snappy的dll副本寫入我的C:\Windows
目錄(這非常令人反感)。這是應該以應對星火臨時文件的一段代碼是:
def getConfiguredLocalDirs(conf: SparkConf): Array[String] = {
...
else if (conf.getenv("SPARK_EXECUTOR_DIRS") != null) {
conf.getenv("SPARK_EXECUTOR_DIRS").split(File.pathSeparator)
} else if (conf.getenv("SPARK_LOCAL_DIRS") != null) {
conf.getenv("SPARK_LOCAL_DIRS").split(",")
} ... (stuffs on mesos)
} else {
// In non-Yarn mode (or for the driver in yarn-client mode), we cannot trust the user
// configuration to point to a secure directory. So create a subdirectory with restricted
// permissions under each listed directory.
conf.get("spark.local.dir", System.getProperty("java.io.tmpdir")).split(",")
}
}
,我想這些的任意組合,但我一直有我的snappy-1.1.2-*-snappyjava.dll
上C:\Windows
(我想我得到這個,因爲這是java.io.tmpdir
)。
有人知道如何設置執行者寫下dll的臨時目錄嗎?謝謝。
編輯。這確實是由於物業java.io.tmpdir
,我可以改變它:
val opt = "-Djava.io.tmpdir=myPath"
conf.set("spark.executor.extraJavaOptions", opt)
但不幸的是這使得這一切對任何機器上的每個執行相同的。
根據您的部署方式,可能需要使用'--driver-java-options'這種方式'--driver-java-options -Djava.io.tmpdir = myPath'。這應該是所有紗線客戶端模式。紗本身將管理節點管理者的臨時目標。 – vpipkt