pyspark - spark.executor.cores vs spark.executor.instance 我应该增加哪一个?
问题描述
为了并行化 Spark 作业,可以增加核心数量和执行器实例数量。这里的权衡是什么,应该如何选择两个配置的实际值?
解决方案
- 增加编号的好处。核心数超过没有。executor 的优势与多线程优于多进程的优势相同。
- 核心数增加数。每个执行程序的线程数和没有。执行者的数量将增加。Java 进程(即集群上的所有 Spark 执行程序)。
- 如果您希望在同一个数据集/数据帧上并行执行多个操作,那么每个执行程序的核心数不增加
- 但是,如果您希望以相对较少的并行度来处理大量数据集/数据帧,那么您可以在键列上对您的一天进行分区,Spark 将在分配给相应分区的执行程序上处理您的数据。
我建议您阅读Cloudera的这篇博文。
通过改变编号来为您的 PySpark 工作进行基准测试。执行人反对没有。执行器线程是为您的应用程序提供正确配置的最佳方式。
推荐阅读
- ibm-cloud - 我们可以将 Alexa 技能的 JSON 文件用于 Watson 技能吗?
- javascript - 当python代码在后台运行时如何显示在php中提交的表单
- mysql - INNER JOIN (SELECT FROM WHERE) 返回错误:字段列表中的未知列
- sapui5 - 表刷新后未调用格式化程序
- html - 为什么背景颜色不适用于 DIV 容器?
- sql - 需要计算每天的罐装总量
- json - 由于 json 和字典中的参数格式错误,Swift-Alamofire 请求失败
- python - 如何使用带有 python 的正则表达式从 XML 文件中删除多个空格和字符?
- python - 当我更改我的 css 代码时如何重新加载烧瓶服务器?
- git - Git克隆错误消息“永久添加到已知主机列表”