2016-08-25 46 views
1

桶的默認值是113.爲什麼?爲什麼不是110?桶邏輯是否在某個「可被整除」值時表現更好。瞭解我的SnappyData表的桶數量?

在SnappyData中有很多例子,使用更少的桶。這是爲什麼?確定使用比默認值113少的桶的邏輯是什麼?

選擇少的含義是什麼?怎麼樣更多桶?我在Spark SQL查詢中看到很多日誌記錄,在每個存儲桶中查找數據。查詢具有更多桶的性能會更差嗎?

回答

1

我們選擇了一個在基於散列的分區邏輯中分配數據時效率最高的素數。存儲桶數量會對查詢性能產生一些影響。當桶被轉換爲Spark任務時,會有更多桶的任務調度開銷。

但是,如果您的集羣在cpus數量方面擁有更多容量,您當然應該嘗試通過素數匹配桶的數量。

2

遵循這些準則來計算桶的分區表的總數:

  1. 使用一個素數。我們在內部使用散列函數,這提供了最均勻的分佈。檢查這個職位的詳細信息:Why use a prime number in hashCode?

  2. 讓它至少四次一樣大 你希望對錶有數據存儲的數量。數據存儲區中存儲區與存儲區的比率越大,負載可以越均勻分佈到成員中。

但請注意,負載均衡和開銷之間有一個折衷。管理存儲桶會產生大量開銷,特別是在冗餘級別更高時。

+0

你能說清楚「數據存儲的數量」是什麼意思?當我定義表DDL時,你是在談論整個SnappyData Store服務器還是REDUNDANCY屬性? – Jason

+0

是的,它表示配置的服務器總數(如果將來要擴展集羣,則預計要進行配置)。 – Sumedh