可以在火花中重新分配影响第0阶段吗?

时间:2018-01-22 16:23:28

标签: scala apache-spark

我有按日期分区的数据集,并打算通过user_id读取和分组。

inputdata
  .groupBy(col("user_id"))
  .count

在我的工作阶段0,平均两次运行,大约需要30分钟。

如果我将代码更改为

inputdata
  .repartition(col("user_id"), 30)
  .groupBy(col("user_id"))
  .count

阶段0的运行时间减少到大约15分钟,再次平均两次运行。

这对我来说似乎完全不合逻辑。我希望,如果有的话,第0阶段的运行时间应该会增加。有没有人有任何见解?

背景资料:

  • 开头有30个分区(30天的数据)。
  • 大约60亿行。
  • 大约14000000个用户ID。
  • 以镶木地板格式运行存储在Hadoop集群中的数据。

0 个答案:

没有答案