【发布时间】:2019-12-21 14:03:26
【问题描述】:
我已将 Spark 驱动程序设置为使用 Zeppelin 和或 JupyterHub 作为客户端在 AWS EMR 上进行交互式 Spark 编程。但是,当我使用自定义配置属性创建SparkSession 时(应用程序名称、核心数、执行程序内存、执行程序数、序列化程序等)它不会覆盖这些配置的默认值(在Spark UI 和spark.conf.get(...) 的环境选项卡下确认)。
像任何 Spark 应用程序一样,EMR 上的这些客户端应该使用我的自定义配置属性,因为 SparkSession 代码是 spark-submit、spark 配置文件和 spark-defaults 之前的第一个最高覆盖。 JupyterHub 也会立即启动一个 Spark 应用程序,无需编码或仅在运行一个空单元格时。
是否有特定于 Zeppelin、JupyterHub 的设置或需要调整以使自定义配置识别和工作的单独 xml 配置?非常感谢任何帮助。
创建一个基本应用程序的示例,其中应实施这些集群资源配置,而不是标准默认配置,这与 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"
【问题讨论】:
-
是忽略所有设置配置还是仅忽略其中一部分?调用“spark-submit”命令时必须设置一些属性,一旦资源分配,YARN 将忽略它们。
-
他们都被忽略了......从来没有通过他们的笔记本客户端在 cloudera 或 databricks 上经历过这种奇怪的行为
标签: apache-spark pyspark jupyter-notebook amazon-emr apache-zeppelin