我正在尝试更改spark写入临时文件的位置。我在网上找到的所有内容都说要通过设置spark-env.sh
文件中的SPARK_LOCAL_DIRS
参数来设置这个位置,但我没有任何运气让更改真正生效。
以下是我所做的:
1.使用Amazon EC2示例创建了一个2-worker测试集群。我使用spark 2.2.0和R sparklyr
包作为前端。使用自动伸缩组启动工作节点。
1.在/tmp/jaytest
创建了一个目录来存储临时文件。每个worker和master中各有一个。
1.放入spark master机器和两个worker,导航到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
参数设置到同一个目录,但也没有成功。
有人能告诉我我错过了什么吗?
编辑:我将其作为独立集群运行(因为下面的答案表明要设置的正确参数取决于集群类型)。
2条答案
按热度按时间fhity93d1#
根据spark文档,它明确指出,如果您配置了Yarn Cluster manager,则它将覆盖spark-env.sh设置。您可以只检查Yarn-env或Yarn-site文件以获取本地dir文件夹设置吗?
“这将被群集管理器设置的SPARK_LOCAL_DIRS(Standalone,Mesos)或LOCAL_DIRS(YARN)环境变量覆盖。”source -https://spark.apache.org/docs/2.3.1/configuration.html
a11xaf1n2#
Mac环境、spark-2.1.0和spark-env.sh包含:
使用Spark弹,它的工作。
您使用的格式正确吗?