apache-spark - 无法设置火花驱动器内存
问题描述
我正在从 Jupiter 笔记本构建一个 spark(在 Apache Spark 版本 2.4.3 上运行)会话,如下所示
spark_session = SparkSession.builder
.master("yarn-client")
.enableHiveSupport()
.getOrCreate()
spark_session.conf.set("spark.executor.memory", '8g')
spark_session.conf.set('spark.executor.cores', '3')
spark_session.conf.set('spark.cores.max', '3')
spark_session.conf.set("spark.driver.memory",'8g')
sc = spark_session.sparkContext
我可以从应用程序主控中看到,所有参数都已正确设置,除了 spark.driver.memory。spark.driver.memory 无论我设置什么,它只使用 1GB。
我已经检查了 spark-default.conf,但没有 spark.driver.memory 等参数。为了检查它是否与会话生成器/木星一起使用,我从命令行使用 spark-submit 运行了一个应用程序,令我惊讶的是它选择了我正在传递的驱动程序内存。
有人可以对此有所了解吗?它不从 jupyter 中仅选择 spark.driver.memory 的原因可能是什么
解决方案
Jupyter notebook 将以 yarn-client 模式启动 pyspark,由于 JVM 驱动程序已经启动,因此无法使用属性“conf”设置驱动程序内存和某些配置。您必须在命令行中设置它。
因此,对于您的问题 - 当您在客户端模式下运行 spark 时,通过“conf.set”设置属性将不起作用,因为 JVM 驱动程序已经使用默认配置启动。这就是为什么当您从命令行传递属性时,它会选择它们。
启动 pyspark 的一种简单方法是
pyspark --driver-memory 2g --executor-memory 2g
更新:
要使用自定义 pyspark 参数启动 jupyter,请创建自定义内核,更多关于 jupyter 内核入门:http ://cleverowl.uk/2016/10/15/installing-jupyter-with-the-pyspark-and-r-kernels -for-spark-开发/
当您定义“kernel.json”时,添加--driver-memory 2g --executor-memory 2g
到 PYSPARK_SUBMIT_ARGS 选项。
推荐阅读
- ruby-on-rails - Capybara have_text 在它应该失败时通过
- ruby-on-rails - Send_data 更改语言问题 Rails
- xamarin - Mvvmcross Xamarin 表单导航页面样式不起作用
- r - 如何在 R 中保存为谷歌街景 API 的图像响应?
- android - 每秒读取和更新json文件数据
- excel - 跳过迭代列
- mysql - sql - 选择包含 2 个表的一列
- datepicker - 如何从jmeter中的只读日期选择器中选择随机值?
- generics - 在继承中使用 kotlin 泛型“in”、“out”
- swift - 是否可以让编译器将 VC 名称视为 VC 类型?