我正在尝试修复内存不足的问题,我想知道是否需要在spark home文件夹中的默认配置文件(spark-defaults.conf
)中更改这些设置。或者,如果我可以在代码中设置它们。
我看到了这个问题PySpark: java.lang.OutofMemoryError: Java heap space,它说这取决于我是否在client
模式下运行。我在集群上运行spark并使用独立监控它。
但是,如何判断我是否在client
模式下运行spark?
答案 0 :(得分:7)
如果您正在运行交互式shell,例如pyspark
(CLI或通过IPython笔记本),默认情况下,您以client
模式运行。您可以轻松验证无法以pyspark
模式运行cluster
或任何其他交互式shell:
$ pyspark --master yarn --deploy-mode cluster
Python 2.7.11 (default, Mar 22 2016, 01:42:54)
[GCC Intel(R) C++ gcc 4.8 mode] on linux2
Type "help", "copyright", "credits" or "license" for more information.
Error: Cluster deploy mode is not applicable to Spark shells.
$ spark-shell --master yarn --deploy-mode cluster
Error: Cluster deploy mode is not applicable to Spark shells.
检查bin/pyspark
文件的内容也可能是有益的 - 这是最后一行(实际可执行文件):
$ pwd
/home/ctsats/spark-1.6.1-bin-hadoop2.6
$ cat bin/pyspark
[...]
exec "${SPARK_HOME}"/bin/spark-submit pyspark-shell-main --name "PySparkShell" "$@"
即。 pyspark
实际上是由spark-submit
运行的脚本,名称为PySparkShell
,您可以在Spark History Server UI中找到它;并且因为它是这样运行的,所以它的spark-submit
命令包含了任何参数(或默认值)。
答案 1 :(得分:6)
由于PySpark中没有sc.deployMode
,您可以查看spark.submit.deployMode
scala> sc.getConf.get("spark.submit.deployMode")
res0: String = client
使用sc.deployMode
scala> sc.deployMode
res0: String = client
scala> sc.version
res1: String = 2.1.0-SNAPSHOT
答案 2 :(得分:1)
从Spark 2+开始,以下工作。
for item in spark.sparkContext.getConf().getAll():print(item)
(u'spark.submit.deployMode', u'client') # will be one of the items in the list.