如何在Spark中實現Count Distinct重聚合

背景

Count Distinct是SQL查詢中經常使用的聚合統計方式,用於計算非重複結果的數目。由於需要去除重複結果,Count Distinct的計算通常非常耗時。

以如下查詢爲例,Count Distinct的實現方式主要有兩種:

SELECT region, COUNT(DISTINCT userId) FROM orders GROUP BY region
  1. 對訂單表的數據按照region進行shuffle分區,在每個分區中使用一個類似HashTable的數據結構,存儲所有的非重複userId的值,最後統計所有key的數量。
  2. 對錶t的數據按照(region, userId)進行shuffle分區,第一步的結果即爲非重複的(region, userId)對,對於第一步的結果再按照region分區,統計每個分區中的Row數量。

第一種方式

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章