前言
spark运行模式 常见的有 local、yarn、spark standalone cluster 国外流行 mesos 、k8s 即使使用 local 模式,spark也会默认充分利用CPU的多核性能 spark使用RDD、DataFrame、DataSet等数据集计算时,天然支持多核计算 但是多核计算提升效率的代价是数据不能顺序计算 如何才能做到即使用spark数据集计算时又保证顺序执行?
1、重新分区
代码语言:javascript复制.repartition(1).foreach
2、合并分区
代码语言:javascript复制.coalesce(1).foreach
3、转换成数组
代码语言:javascript复制.collect().foreach
4、设置并行度
代码语言:javascript复制val spark = SparkSession.builder().config("spark.default.parallelist","1").getOrCreate()
5、设置单核
代码语言:javascript复制val spark = SparkSession.builder().appName("").master("local[1]").getOrCreate()
推荐使用 repartition,coalesce 和 collect 可能会出现 oom
速度固然重要,但解决问题才是根本!