我正在尝试更改spark将临时文件写入的位置。我在网上找到的所有内容都说可以通过在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
参数设置为同一目录,但也没有成功。
有人可以建议我在这里可能想念什么吗?
编辑:我将其作为独立群集运行(因为以下答案表明要设置的正确参数取决于群集类型)。
答案 0 :(得分:1)
Mac env,spark-2.1.0和spark-env.sh包含:
export SPARK_LOCAL_DIRS=/Users/kylin/Desktop/spark-tmp
使用spark-shell,它可以正常工作。
您使用了正确的格式吗?
答案 1 :(得分:0)
根据spark文档,很明显地说,如果您配置了Yarn Cluster Manager,则它将覆盖spark-env.sh设置。您能否仅在Yarn-env或yarn-site文件中签入本地dir文件夹设置。
“这将被集群管理器设置的SPARK_LOCAL_DIRS(独立,Mesos)或LOCAL_DIRS(YARN)环境变量覆盖。” 来源-https://spark.apache.org/docs/2.3.1/configuration.html