代码之家  ›  专栏  ›  技术社区  ›  lodo

将spark.local.dir设置为不同的驱动器

  •  0
  • lodo  · 技术社区  · 6 年前

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

    1 回复  |  直到 6 年前
        1
  •  1
  •   sramalingam24    6 年前

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

    添加键值对

    SPARK_LOCAL_DIRS -> d:\spark-tmp\tmp 
    

    到您的系统环境变量

    推荐文章