apache-spark - Spark 1.6 如何计算重新分区值
问题描述
repartition(value) 是在什么基础上根据数据大小或其他东西计算出来的?
如果假设特定数据框中有 1 亿条记录,我们必须在重新分区中给出什么值?以及如何计算价值?
解决方案
没有人能准确地告诉您需要多少个分区。最佳记录数取决于记录数、每条记录的大小以及您想用它做什么。
我建议从 200(默认值spark.sql.shuffle.partitions
)开始,检查内存是否有任何问题,同时检查 Spark UI 中的任务持续时间和峰值执行内存。根据您的发现增加或减少分区的数量。您可能还想运行一些简单的基准测试。确保您始终拥有(数倍)多于#executors*cores_per_executors
请注意,如果您value
根据数据大小进行查询,则需要两次查询数据,通常这不需要,有时它是有意义的(如果工作负载差异很大)。通常这可以通过粗略的近似值来改变(基于查询的输入参数,即它是否是(初始)满载、更新作业等
推荐阅读
- reactjs - GET 请求中的数据未从状态传递到道具
- php - WooCommerce | woocommerce_email_before_order_table 函数调用不适用于初始电子邮件发送,但适用于状态更改
- pandas - 使用日期时间格式从数据框列中删除时区
- javascript - 带有摘要行的 ExtJS 网格在最后一行不会有“x-grid-item-over”
- azure-functions - 无法关闭连接 python gremlin 客户端
- discord.py - 使命令对不和谐机器人不区分大小写
- ios - iOS 12 上的 UISearchController 子类崩溃
- python - 如何阻止我的机器人响应@everyone pings,但也响应discord.py 中的@Bot pings?
- mysql - 不要为小数字段加载空字符串
- c++ - c++到delphi转换