我具有Spark驱动程序设置,可以使用Zeppelin
和或JupyterHub
作为AWS EMR
上交互式Spark编程的客户端。但是,当我使用自定义配置属性((应用程序名称,内核数,执行程序ram,执行程序的数量,序列化程序等))创建SparkSession
时,它并不会覆盖这些配置的默认值(在环境下确认Spark UI
和spark.conf.get(...)
中的标签)。
[像任何Spark应用程序一样,EMR
上的这些客户端应使用我的自定义配置属性,因为SparkSession
代码是在spark-submit,spark配置文件和spark-defaults之前的第一个最高优先级。 JupyterHub
也立即启动不带代码或仅在运行空单元格时不进行编码的Spark应用程序。
是否有特定于Zeppelin
,JupyterHub
的设置,或需要进行调整以使自定义配置能够正常工作的单独的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"
找到了解决方案。 config.json
下的/etc/jupyter/conf
文件具有一些默认的spark配置值,因此我删除了它们以显示空的json键/值,例如=> _configs":{}
。现在,通过SparkSession
创建自定义JupyterHub
可以理解指定的集群配置。
这些魔术命令始终有效%%configure