【问题标题】:SparkSession Application Source Code Config Properties not Overriding JupyterHub & Zeppelin on AWS EMR defaultsSparkSession 应用程序源代码配置属性未覆盖 AWS EMR 默认值上的 JupyterHub 和 Zeppelin
【发布时间】:2019-12-21 14:03:26
【问题描述】:

我已将 Spark 驱动程序设置为使用 Zeppelin 和或 JupyterHub 作为客户端在 AWS EMR 上进行交互式 Spark 编程。但是,当我使用自定义配置属性创建SparkSession(应用程序名称、核心数、执行程序内存、执行程序数、序列化程序等)它不会覆盖这些配置的默认值(在Spark UIspark.conf.get(...) 的环境选项卡下确认)。

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

是否有特定于 ZeppelinJupyterHub 的设置或需要调整以使自定义配置识别和工作的单独 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


【解决方案1】:

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

这些神奇的命令总是有效%%configure

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-26
    • 2021-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多