【发布时间】: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