我们在独立模式下运行Spark,并在240GB“大型”EC2框中使用3个节点将读取到DataFrame中的三个CSV文件合并为JavaRDD,使用s3a在S3上输出CSV部分文件。Spark Stand Alone - 最后一步saveAsTextFile花费很多时间使用很少的资源编写CSV文件
我们可以从Spark UI中看到第一阶段的读取和合并,以达到预期的100%CPU的最终JavaRDD运行,但使用saveAsTextFile at package.scala:179
在CSV文件中写出的最后阶段会在很长时间内“卡住” 3个节点中的2个,其中32个任务中的2个需要花费数小时(盒的CPU占用率为6%,内存占用率为86%,网络IO为15kb/s,磁盘IO整个周期为0)。
我们正在读取和写入未压缩的CSV(我们发现未压缩的速度比gzipped CSV快得多),在三个输入数据帧的每一个上都有重新分区16,并且不会共享写入。
希望得到任何提示,我们可以调查为什么最后阶段需要花费很多时间在我们的独立本地群集中的3个节点中的2个上做很少的工作。
非常感谢
--- UPDATE ---
我试着写到本地磁盘,而不是S3A和症状是相同的 - 的32个任务2在最后阶段saveAsTextFile
“被困“几个小时:
感谢。我尝试过,但症状是一样的,没有明显的变化。 – user894199