如何使用spark-env.sh文件

时间:2018-08-29 02:41:59

标签: apache-spark sparklyr

我正在尝试更改spark将临时文件写入的位置。我在网上找到的所有内容都说可以通过在SPARK_LOCAL_DIRS文件中设置spark-env.sh参数来进行设置,但是我对实际生效的更改没有任何运气。

这是我所做的:

  1. 使用Amazon EC2实例创建了2人测试集群。我正在使用spark 2.2.0和R sparklyr包作为前端。使用自动伸缩组将工作节点旋转起来。
  2. /tmp/jaytest创建了一个目录来存储临时文件。每个工人中有一个,而主人中有一个。
  3. 分别放入spark主计算机和两个工作器,导航到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 个答案:

答案 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