SparkSession应用程序源代码配置属性,不覆盖AWS EMR默认值上的JupyterHub和Zeppelin

问题描述 投票:0回答:1

我具有Spark驱动程序设置,可以使用Zeppelin和或JupyterHub作为AWS EMR上交互式Spark编程的客户端。但是,当我使用自定义配置属性((应用程序名称,内核数,执行程序ram,执行程序的数量,序列化程序等))创建SparkSession时,它并不会覆盖这些配置的默认值(在环境下确认Spark UIspark.conf.get(...)中的标签)。

[像任何Spark应用程序一样,EMR上的这些客户端应使用我的自定义配置属性,因为SparkSession代码是在spark-submit,spark配置文件和spark-defaults之前的第一个最高优先级。 JupyterHub也立即启动不带代码或仅在运行空单元格时不进行编码的Spark应用程序。

是否有特定于ZeppelinJupyterHub的设置,或需要进行调整以使自定义配置能够正常工作的单独的xml conf?任何帮助都非常感谢。

[创建一个基本应用程序的示例,在该示例中应实现这些群集资源配置,而不是标准默认配置,这是Zeppelin/JupyterHub上的EMR发生的情况。


# via zep or jup [configs NOT being recognized]
from pyspark.sql import SparkSession

spark = SparkSession\
.builder\
.appName("app_name")\
.master("yarn")\
.config("spark.submit.deployMode","client")\
.config("spark.serializer", "org.apache.spark.serializer.KryoSerializer")\
.config("spark.executor.instances", 11)\
.config("spark.executor.cores", 5)\
.config("spark.executor.memory", "19g")\
.getOrCreate()

# via ssh terminal [configs ARE recognized at run-time]
pyspark \
--name "app_name" \
--master yarn \
--deploy-mode client \
--num-executors 11 \
--executor-cores 5 \
--executor-memory 19 \
--conf "spark.serializer=org.apache.spark.serializer.KryoSerializer"

apache-spark pyspark jupyter-notebook amazon-emr apache-zeppelin
1个回答
0
投票

找到了解决方案。 config.json下的/etc/jupyter/conf文件具有一些默认的spark配置值,因此我删除了它们以显示空的json键/值,例如=> _configs":{}。现在,通过SparkSession创建自定义JupyterHub可以理解指定的集群配置。

这些魔术命令始终有效%%configure

https://github.com/jupyter-incubator/sparkmagic

© www.soinside.com 2019 - 2024. All rights reserved.