如何更改spark设置以允许spark.dynamicallocation.enabled?

ltqd579y  于 2021-05-27  发布在  Spark
关注(0)|答案(5)|浏览(1179)

我正在pyspark中运行一个python脚本,出现以下错误:namererror:name'spark'未定义
我查了一下,发现原因是 spark.dynamicAllocation.enabled 还不允许。
根据spark的文件(https://jaceklaskowski.gitbooks.io/mastering-apache-spark/content/spark-dynamic-allocation.html#spark_dynamicallocation_enabled): spark.dynamicAllocation.enabled (默认值: false )控制是否启用动态分配。假设 spark.executor.instances 未设置或为0(这是默认值)。
因为默认设置是 false ,我需要更改Spark设置以启用 spark.dynamicAllocation.enabled .
我用brew安装了spark,并且没有更改其配置/设置。
如何更改设置并启用 spark.dynamicAllocation.enabled ?
谢谢。

yeotifhr

yeotifhr1#

问题:如何更改设置并启用spark.DynamicLocation.enabled?
有3种方法可以实现这一点。
1) 修改以下中提到的参数 spark-defaults.conf 2) 从--conf发送以下参数 spark-submit 3) 通过编程指定动态分配的配置,如下所示。
从程序上来说,你可以这样做,你可以这样做。

val conf = new SparkConf()
      .setMaster("ClusterManager")
      .setAppName("test-executor-allocation-manager")
      .set("spark.dynamicAllocation.enabled", "true")
      .set("spark.dynamicAllocation.minExecutors", 1)
      .set("spark.dynamicAllocation.maxExecutors", 2)
      .set("spark.shuffle.service.enabled", "true") // for stand alone
kx1ctssn

kx1ctssn2#

有几个地方可以设置。如果要按作业启用,请在每个应用程序中设置以下内容:

conf.set("spark.dynamicAllocation.enabled","true")

如果要为所有作业设置if,请导航到spark.conf文件。在hortonworks发行版中

/usr/hdp/current/spark-client/conf/

将该设置添加到spark-defaults.conf中,就可以开始了。

yqyhoc1h

yqyhoc1h3#

除了前面的回答,所有提到的配置可能无法工作,因为解释器设置(如果您使用齐柏林飞艇)。我使用livy,它的默认设置覆盖dynamicallocation参数。

j91ykkif

j91ykkif4#

这个问题也会影响使用其他资源进行的spark安装,例如用于在amazonweb服务上安装的spark-ec2脚本。在spark文档中,需要设置spark_home/conf/spark-defaults.conf中的两个值:

spark.shuffle.service.enabled   true
spark.dynamicAllocation.enabled true

看这个:https://spark.apache.org/docs/latest/configuration.html#dynamic-分配
如果您的安装在spark\u home/conf中有一个spark-env.sh脚本,请确保它没有以下行,或者它们被注解掉了:

export SPARK_WORKER_INSTANCES=1 #or some other integer, or
export SPARK_EXECUTOR_INSTANCES=1 #or some me other integer
ubby3x7f

ubby3x7f5#

可以使用以下类似命令在pyspark中通过笔记本设置配置参数:

spark.conf.set("spark.sql.crossJoin.enabled", "true")

相关问题