我试图改变火花写临时文件的位置。我在网上找到的所有内容都说通过在SPARK_LOCAL_DIRS
文件中设置spark-env.sh
参数来设置它,但我没有任何运气实际生效。
这就是我所做的:
sparklyr
包作为前端。使用自动缩放组旋转工作节点。/tmp/jaytest
中存储临时文件。每个工人中都有一个,主人中有一个。home/ubuntu/spark-2.2.0-bin-hadoop2.7/conf/spark-env.sh
,并修改文件以包含这一行:SPARK_LOCAL_DIRS="/tmp/jaytest"
每个spark-env.sh
文件的权限是-rwxr-xr-x
,jaytest文件夹的权限是drwxrwxr-x
。
据我所知,这符合我在网上阅读的所有建议。但是,当我将一些数据加载到集群中时,它仍然以/tmp
而不是/tmp/jaytest
结束。
我也尝试将spark.local.dir
参数设置到同一目录,但也没有运气。
有人可以告诉我这里可能缺少什么吗?
编辑:我将其作为独立群集运行(因为下面的答案表明要设置的正确参数取决于群集类型)。
Mac env,spark-2.1.0和spark-env.sh包含:
export SPARK_LOCAL_DIRS=/Users/kylin/Desktop/spark-tmp
使用spark-shell,它可以工作。
你使用了正确的格式吗?
根据spark文档,很明显,如果您已配置Yarn Cluster manager,那么它将覆盖spark-env.sh设置。您可以在Yarn-env或yarn-site文件中检查本地目录文件夹设置。
“这将由集群管理器设置的SPARK_LOCAL_DIRS(Standalone,Mesos)或LOCAL_DIRS(YARN)环境变量覆盖。”来源 - https://spark.apache.org/docs/2.3.1/configuration.html