2

ttlは24時間または1日です。私たちは4 cassandra 3.0 node clusterを持っていて、このテーブルにはsparkの処理があります。処理されると、テーブル内のすべてのデータが切り捨てられ、新しいデータバッチが挿入されます。これは継続的なプロセスになります。カサンドラで頻繁に切り詰められ、24時間ttlで大きな墓石が作成されます

問題の処理が終了した後、毎日データが頻繁に切り捨てられるため、私たちはさらにtombstonesを取得しています。

gc_grace_secondsをデフォルトに設定すると、tombstonesとなります。 gc_grace_secondsを1日に減らすと問題になりますか?私がそのテーブルで修理をしても、毎日それで十分でしょう。

私はこの問題にどのようにアプローチすればよいですか?頻繁に削除されるのは反パターンですCassandraで、この問題を解決する方法はありますか?

TABLE b.stag (
    xxxid bigint PRIMARY KEY, 
    xxxx smallint, 
    xx smallint, 
    xxr int, 
    xxx text, 
    xxx smallint, 
    exxxxx smallint, 
    xxxxxx tinyint, 
    xxxx text, 
    xxxx int, 
    xxxx text, 
xxxxx text, 
    xxxxx timestamp 
) WITH bloom_filter_fp_chance = 0.01 
    AND caching = {'keys': 'ALL', 'rows_per_partition': 'NONE'} 
    AND comment = '' 
    AND compaction = {'class': 'org.apache.cassandra.db.compaction.SizeTieredCom                      pactionStrategy', 'max_threshold': '32', 'min_threshold': '4'} 
    AND compression = {'chunk_length_in_kb': '64', 'class': 'org.apache.cassandr                      a.io.compress.LZ4Compressor'} 
    AND crc_check_chance = 1.0 
    AND dclocal_read_repair_chance = 0.1 
    AND default_time_to_live = 86400 
    AND gc_grace_seconds = 864000 
    AND max_index_interval = 2048 
    AND memtable_flush_period_in_ms = 0 
    AND min_index_interval = 128 
    AND read_repair_chance = 0.0 
    AND speculative_retry = '99PERCENTILE'; 

テーブルのTRUNCATEは墓石を呼び出すべきではありませんあなた

答えて

0

に感謝します。だから、あなたが「切り捨てる」と言っているとき、私はあなたが削除を意味すると思います。すでに述べたように、gc_grace_secondsの値を落とすことはできますが、これは、データを調整するための修復ウィンドウを小さくし、各ノードが特定のキーなどに対して正しい墓石を持っていることを確認したり、そのトレードオフ。

ただし、毎回テーブルをクリアする場合は、TRUNCATEコマンドを使用してください。このようにして、テーブルを削除せずにフラッシュします。

+0

トランケート操作は、ALLまたはクォーラムの整合性レベルで使用する必要がありますか?ドキュメントごとに、どれが良いですか?レプリカノードがダウンしている場合はALLが失敗しますが、処理中は切り捨て操作を続行します。切り詰め操作のためにクォーラムを使用することの問題。 –

+0

あなたはトランケートで一貫性レベルを使用する必要はありません.DDL操作として通常の書き込みパスに従わないので、ゴシップですべてのノードに伝播します。 – markc

+0

私はトランケートテーブルを使用しました。コマンドは4ノードクラスタ(1ノードダウン)からのTruncateError:<サーバからのエラー:コード= 1003 [切り捨て中のエラー]メッセージ= "切り詰め中のエラー:整合性レベルALLを達成できません"というエラーが発生しました。それは1つです。したがって、truncate操作ではデフォルトでALLですか?ノードがダウンしていてもトランケートが成功する方法はありますか?解析プロセスの一環としてテーブルを連続的に切り捨てる必要があります。ノードがダウンしていると、すべてのプロセスに影響する可能性があります。 –

関連する問題