0

プロジェクトで Flink Table SQL を使用しているときGROUP BYに、SQL に句があると、チェックポイントのサイズが大幅に増加することがわかりました。

例えば、

INSERT INTO COMPANY_POST_DAY
SELECT
    sta_date,
    company_id,
    company_name
FROM
    FCBOX_POST_COUNT_VIEW

チェックポイントのサイズは 500KB 未満になります。

でも、こうやって使うと、

INSERT INTO COMPANY_POST_DAY
SELECT
    sta_date,
    company_id,
    company_name,
    sum(ed_post_count)
FROM
    FCBOX_POST_COUNT_VIEW
GROUP BY
    sta_date, company_id, company_name, TUMBLE(procTime, INTERVAL '1' SECOND)

メッセージが処理されていない場合でも、チェックポイントのサイズは 70MB を超えます。このような、

画像はこちら。

keyByただし、Table SQLの代わりに DataStream API と を使用するとGROUP BY、チェックポイントのサイズは通常の 1MB 未満になります。

なんで?

-------2019-03-25 更新--------

いくつかのテストを行ってソース コードを読んだ後、その理由は RocksDB にあることがわかりました。

状態バックエンドとして RockDB を使用する場合、チェックポイントのサイズはキーごとに約 5MB を超え、ファイルシステムを状態バックエンドとして使用する場合、チェックポイントのサイズはキーごとに 100KB 未満に減少します。

状態を保持するために RocksDB が大量のスペースを必要とするのはなぜですか? いつ RocksDB を選択する必要がありますか?

4

1 に答える 1