1

デフォルトのバケット数は 113 です。なぜですか? なぜ110ではないのですか?バケット ロジックは、特定の「割り切れる」値でパフォーマンスが向上しますか。

バケットが少ない SnappyData には多くの例があります。何故ですか?デフォルトの 113 より少ないバケットを使用することを決定したロジックは何ですか?

より少ない選択の意味は何ですか?より多くのバケツはどうですか?各バケットでデータを探している Spark SQL クエリで多くのログが記録されています。バケットを増やすと、クエリのパフォーマンスが低下しますか?

4

2 に答える 2

2

次のガイドラインに従って、分割されたテーブルのバケットの総数を計算します。

  1. 素数を使用します。内部でハッシュ関数を使用しており、これが最も均等な分散を提供します。詳細については、この投稿を確認してください: hashCode で素数を使用する理由

  2. テーブルに必要なデータ ストアの数の少なくとも 4 倍の大きさにします。バケットとデータ ストアの比率が大きいほど、メンバー間で負荷を均等に分散できます。

ただし、負荷分散とオーバーヘッドの間にはトレードオフがあることに注意してください。バケットを管理すると、特に冗長性のレベルが高い場合に、かなりのオーバーヘッドが発生します。

于 2016-08-25T07:51:29.003 に答える
1

ハッシュ ベースのパーティショニング ロジックでデータを分散する際に最も効率的な素数を選択しました。バケットの数は、クエリのパフォーマンスに影響を与えます。バケットは Spark タスクに変換されるため、バケット数が増えるとタスク スケジューリングのオーバーヘッドが発生します。

ただし、CPU の数に関してクラスターの容量が大きい場合は、バケットの数を素数に近い値に一致させるようにしてください。

于 2016-08-25T07:17:01.113 に答える