編集者への手紙|設定HBaseのTTL最初無効に形成しなければなりませんか?(解決済み)

今日、友人がある友人を追加し、私は問題のいくつかを議論し、私はこれらの問題は非常に貴重であるでしょうと思います。その技術交流と列名としてそれを共有しやすくするために、公共のQ&この番号の列を設定したい:「手紙。」リソースラップ私の手の大物を固執する転送される困難な問題を解決するために、私の限られた能力の場合には、質問者のマイクロチャネルの二次元コードと一緒に、助けを求めます。また、積極的に解決策を模索することを歓迎 - メッセージエリアに

手紙:黄魏*

小猿の質問

私が欲しいが、HBaseの中のファイルのデータの最後の90日間を維持する場合、増分、毎日日付で発行されたファイルを処理するHBaseの書かれたスパークを使用している場合は、それを行うには良い方法はありませんか?TTLが作動して、テーブルを無効にします、バックエンドのクエリがエラーをスローします。TTLに加えて、他の解決策はあるのですか?

小猿の分析

問題の嘘の主な核心:テーブルの建設の始まりは、TTLの列ファミリを設定するための時間がない、私は、データの適時性を保証するために、TTL属性データの後にテーブルを設定することができると思ったが、テーブルを無効にしたくありません。どのようにそれを行うには?

小猿の回答

ここでは、小さな猿は2ソリューションを提供します:

オプション1:

実際には、わずかに高いHBaseのバージョン、あなたは、テーブルを無効にする必要はありません、テーブルのTTLプロパティは、オンラインでそれを持って設定してください。あなたがわからない場合、あなたは試してみる程度表オンラインテストTTLセットを構築することができます。それがない場合は適時HBaseのシェルは手動で一度、すべての、列ファミリを修正することで、あなたはオフピーク時に選択することができます。

hbase(main):030:0> create 'test','f1'
0 row(s) in 1.2990 seconds

=> Hbase::Table - test
hbase(main):031:0> desc 'test'
Table test is ENABLED                                                                                                                                                                          
test                                                                                                                                                                                           
COLUMN FAMILIES DESCRIPTION                                                                                                                                                                    
{NAME => 'f1', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', COMPRESSION => 'NONE', MIN_VERSIONS
 => '0', BLOCKCACHE => 'true', BLOCKSIZE => '65536', REPLICATION_SCOPE => '0'}                                                                                                                 
1 row(s) in 0.0480 seconds

hbase(main):032:0> alter 'test',{NAME => 'f1',TTL => '86400'}
Updating all regions with the new schema...
1/1 regions updated.
Done.
0 row(s) in 1.9870 seconds

単位:秒(s)

オプション2:

プログラムは、APIを介して作業が、試すことがされない場合は、単一のデータTTLを挿入するときに、リアルタイムデータが提供されます。しかし、過去のデータを手動で削除します。

Put put = new Put(Bytes.toBytes("row1"));
put.setTTL(86400L);

単位:秒(s)

知識サプリメント

あなたは「FOREVER」TTLはリセットしたい場合はどのように行うには?
:HBaseのTTLの最大値が最大INT 2147483647であり、単に設定TTL整数とすることができます。

hbase(main):033:0> alter 'test',{NAME => 'f1',TTL => '2147483647'}
Updating all regions with the new schema...
1/1 regions updated.
Done.
0 row(s) in 1.9170 seconds

hbase(main):034:0> desc 'test'
Table test is ENABLED                                                                                                                                                                          
test                                                                                                                                                                                           
COLUMN FAMILIES DESCRIPTION                                                                                                                                                                    
{NAME => 'f1', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', COMPRESSION => 'NONE', MIN_VERSIONS
 => '0', BLOCKCACHE => 'true', BLOCKSIZE => '65536', REPLICATION_SCOPE => '0'}                                                                                                                 
1 row(s) in 0.0140 seconds

あなたがより良い答えを持っている場合は、ああ〜セクションのコメントを歓迎するためにメッセージを残します

社会的関心のブロガーのQRコード番号をスキャン

ソースを示してください!私は、マイクロチャネルのパブリック番号HBaseの作業に焦点を歓迎[ノート]

おすすめ

転載: www.cnblogs.com/zpb2016/p/12649831.html