首页 > 解决方案 > 在内存受限的设置中运行 Spark

问题描述

我对在内存非常有限的环境中运行 Spark 的任何提示/技巧或配置选项感兴趣。对于可用内存较小的部署,最重要的注意事项是什么?

标签: apache-sparkapache-spark-sql

解决方案


良好的数据处理基础会让你走得很远。

  • 避免在不需要的列周围拖动。
  • 使用内存效率高的类型,如 int 而不是字符串。
  • 避免需要在内存中实现大量数据的操作,例如连接、排序和分组。
  • 考虑将您的查询分解为多个较小的查询。例如,对每小时而不是每天的数据集运行查询。
  • 确保您拥有合理数量的分区,以便每个分区的数据量较低。
  • 确保您正确处理倾斜。这可能会导致单个任务的内存利用率飙升。
  • 每个执行程序运行更多的 cpus 以获得更大的内存池以在任务之间共享。
  • 确保内存与 CPU 的比例合理。您甚至可能希望保留一些未充分利用的 CPU,并为每个任务分配更多内存。
  • 最后,您还可以在内存不足时使用快速磁盘。Spark 在进行排序和连接时能够溢出到磁盘。

推荐阅读