我正在查看当前正在运行的工作阶段的 Spark UI(Spark v1.6.0),但我不明白如何解释它告诉我的内容:
“Shuffle Write Size / Records”列中的记录数是有道理的,这些数字与我正在处理的数据一致。
我不明白的是“输入大小/记录”中的数字。它们表明传入的数据在每个分区中只有约 67 条记录;作业有 200 个分区,所以总共有 1200 条记录。我不知道那是什么意思,这个作业的输入数据集(使用 SparkSQL 实现)都没有大约 1200 条记录。
所以,我对这些数字所指的内容感到困惑。任何人都可以启发我吗?
您的输入大小/记录太小。这意味着您的任务一次只执行大约 14 MB 的数据,这太少了。经验法则是它应该是 128 MB。
您可以通过改变HDFS块大小更改为128 MB,即hdfs.block.size到134217728,或者如果您从AWS S3存储访问,那么你可以设置fs.s3a.block.size要134217728在core-site.xml文件
改变这一点也会减少分区的数量。
接下来是你的Shuffle Write Size / Records太高了。这意味着在 shuffle 之间交换了大量数据,这是一项昂贵的操作。您需要查看您的代码,看看您是否可以优化它或编写不同的操作,以便它不会乱序太多。
| 归档时间: |
|
| 查看次数: |
5756 次 |
| 最近记录: |