【问题标题】:Spark DataFrame / Dataset groupBy optimization via bucketBySpark DataFrame / Dataset groupBy 通过 bucketBy 优化
【发布时间】:2019-10-05 09:54:41
【问题描述】:

我正在研究一个用例的选项,我们将数据集存储为 parquet 文件,并希望稍后在读取数据时对特定键运行有效的 groupBy 查询。

我已经阅读了一些关于 groupBy 优化的内容,但实际上并没有找到太多关于它的信息(除了 RDD 级别的 reduceByKey)。 我想到的是,如果数据集是由也将在 groupBy 中使用的键写入的。理论上 groupBy 可以优化,因为包含键的所有行都将位于同一位置(如果它也按相同键排序存储,则甚至是连续的)。

我想到的一个想法是通过 mapPartitions 然后 groupBy 应用转换,但是,这需要将我的函数分成两个,这并不是真正可取的。我相信对于某些类型的函数(比如 sum/count),spark 也会以类似的方式优化查询,但是优化将通过函数的选择来启动,并且无论行的共同位置如何都可以工作,但不是因为同地。

spark 能否利用行的协同定位来优化 groupBy 随后使用任何函数?

【问题讨论】:

    标签: apache-spark group-by query-optimization parquet bucket


    【解决方案1】:

    似乎分桶的主要用例是在分桶键上执行 JOIN,这允许 Spark 避免在整个表中进行随机播放。如果 Spark 知道行已经在存储桶中分区,我不明白为什么它不知道在 GROUP BY 中使用预分区的存储桶。不过,您可能还需要按键按组排序。

    我也对这个用例感兴趣,所以会尝试一下,看看是否会发生随机播放。

    【讨论】:

      猜你喜欢
      • 2015-12-30
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-23
      • 1970-01-01
      相关资源
      最近更新 更多