代码之家  ›  专栏  ›  技术社区  ›  Vitaliy

火花“极限”不平行?

  •  0
  • Vitaliy  · 技术社区  · 6 年前

    我有一个简单的连接,我限制在边上。在Explain计划中,我看到在执行限制之前有一个ExchangeSingle操作,实际上在这个阶段,集群中只有一个任务在运行。

    这当然会显著地影响性能(删除限制会删除单个任务瓶颈,但会延长连接,因为它在更大的数据集上工作)。

    极限真的不可并行吗?如果是这样的话-有解决办法吗?

    我在数据砖块集群上使用火花。

    编辑:关于可能的副本。答案并不能解释为什么所有的东西都被无序地放到一个分区中。另外-我征求了一些建议来解决这个问题。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Vitaliy    6 年前

    根据用户8371915在评论中给出的建议,我使用了样本而不是限制。它打开了瓶颈。

    一个很小但很重要的细节:我仍然需要在采样后对结果集施加一个可预测的大小约束,但是采样输入了一个分数,因此结果集的大小可以很大程度上取决于输入的大小。

    幸运的是,使用count()运行相同的查询非常快。所以我首先计算了整个结果集的大小,然后用它来计算我后来在样本中使用的分数。