我基本上使用spark运行排序。 spark程序将从HDFS读取,对复合键进行排序,然后将分区结果保存回HDFS。 伪代码是这样的:
input = sc.textFile
pairs = input.mapToPair
sorted = pairs.sortByKey
values = sorted.values
values.saveAsTextFile
输入大小约为160G,我在JavaSparkContext.textFile和JavaPairRDD.sortByKey中指定了1000个分区。从WebUI,作业分为两个阶段:saveAsTextFile和mapToPair。 MapToPair在8分钟内完成。虽然saveAsTextFile花费了大约15分钟来达到(2366/2373)进度,但最后几个工作只是花了很长时间而且从未结束。
群集设置:
8个节点
每个节点上的:15GB内存,8个内核
运行参数:
- executor-memory 12G
- conf" spark.cores.max = 60"
感谢您的帮助。