我正在查看我正在运行的工作阶段的Spark UI(Spark v1.6.0),我不明白如何解释它告诉我的内容: “随机写入大小/记录”列中的记录数是有意义的,这些数字与我正在处理的数据一致。
我不明白的是“输入大小/记录”中的数字。它们表明传入的数据在每个分区中只有约67条记录;这个工作有200个分区,所以总共有1200个记录。我不知道这是指什么,这个作业的输入数据集(使用SparkSQL实现)都没有约1200条记录。
所以,我对这些数字所指的内容感到困惑。谁能开导我?
答案 0 :(得分:4)
输入尺寸/记录太低。这意味着,您的任务一次只执行大约14 MB的数据,这些数据太低。拇指规则是它应该是128 MB。
您可以通过将HDFS块大小更改为128 MB(hdfs.block.size
到134217728
来更改此项,或者如果您从AWS S3 Storage访问,则可以将fs.s3a.block.size
设置为{{ 1}}在134217728
文件
更改此项也会减少数量。
接下来是随机播放写入大小/记录太高。这意味着很多数据在shuffle之间进行交换,这是一项昂贵的操作。你需要查看你的代码,看看你是否可以对它进行优化,或者将你的操作编写得不同,以免它变得太乱。