如何解释 Spark Stage UI 中的输入大小/记录

jam*_*iet 7 apache-spark

我正在查看当前正在运行的工作阶段的 Spark UI(Spark v1.6.0),但我不明白如何解释它告诉我的内容: Spark 舞台界面 “Shuffle Write Size / Records”列中的记录数是有道理的,这些数字与我正在处理的数据一致。

我不明白的是“输入大小/记录”中的数字。它们表明传入的数据在每个分区中只有约 67 条记录;作业有 200 个分区,所以总共有 1200 条记录。我不知道那是什么意思,这个作业的输入数据集(使用 SparkSQL 实现)都没有大约 1200 条记录。

所以,我对这些数字所指的内容感到困惑。任何人都可以启发我吗?

Aru*_*run 7

您的输入大小/记录太小。这意味着您的任务一次只执行大约 14 MB 的数据,这太少了。经验法则是它应该是 128 MB。

您可以通过改变HDFS块大小更改为128 MB,即hdfs.block.size134217728,或者如果您从AWS S3存储访问,那么你可以设置fs.s3a.block.size134217728core-site.xml文件

改变这一点也会减少分区的数量。

接下来是你的Shuffle Write Size / Records太高了。这意味着在 shuffle 之间交换了大量数据,这是一项昂贵的操作。您需要查看您的代码,看看您是否可以优化它或编写不同的操作,以便它不会乱序太多。