hbase有最大版本号吗?

发布于 2024-12-11 01:04:19 字数 285 浏览 0 评论 0原文

如果我想插入表中:

row | fam:qualifier | timestamp | value
1 | foo:bar | 12345 | 2
1 | foo:bar | 12346 | 3
1 | foo:bar | 12347 | 2
1 | foo:bar | 12348 | 1
.
.
. 
1 | foo:bar | 123410 | 2

我可以在 hbase shell 中指定从特定行获取的最大版本数,但是当我指定“100”时,它只返回 4 个版本... 有上限吗?

If I want to insert in a table:

row | fam:qualifier | timestamp | value
1 | foo:bar | 12345 | 2
1 | foo:bar | 12346 | 3
1 | foo:bar | 12347 | 2
1 | foo:bar | 12348 | 1
.
.
. 
1 | foo:bar | 123410 | 2

I can specify in the hbase shell the maximum number of version to get fom a specific row but when I specify for instance '100' it return me only 4 versions...
Is there any maximum?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

So要识趣 2024-12-18 01:04:19

它只返回 4 个版本,因为列族设置为最多存储 4 个版本。

如果您想存储更多版本,则需要更改 CF。使用 hbase shell:

hbase> alter 'table_foo', {NAME => 'column_fam_foo', VERSIONS => 100}

最大版本的默认值为 1*:

http://hbase.apache .org/book/schema.versions.html

*似乎最大版本的默认值在某些时候从 3 更改为 1。

It only returns 4 versions because the column family is set to store a maximum of 4 versions.

If you want to store more versions you need to alter the CF. Using the hbase shell:

hbase> alter 'table_foo', {NAME => 'column_fam_foo', VERSIONS => 100}

The default for max versions is 1*:

http://hbase.apache.org/book/schema.versions.html

*It seems the default value for max versions was changed from 3 to 1 at some point.

梦情居士 2024-12-18 01:04:19

答案是部分正确的。不正确:hbase 存储三个版本。证明见下。
正确:您可以设置 hbase 返回的最大版本数

alter 'marketdata', NAME => 'field', VERSIONS => 100   

但是现在让我们假设,我没有更改版本变量。

我的 hbase 中有 10 个条目,时间戳从 0 到 9。
最新的时间戳是:

hbase(main):025:0> get 'marketdata', 'instrument1', {COLUMN => 'field:ask'}                                 
COLUMN                             CELL                                                                                   
 field:ask                     timestamp=9,         value=0.9940174211042572                                                  
1 row(s) in 0.0590 seconds

hbase(main):026:0> 

显示的从时间戳 1 到 5 的值是:

hbase(main):027:0> get 'marketdata', 'instrument1', {COLUMN => 'field:ask', TIMERANGE => [0,5], VERSIONS=>5}
COLUMN                             CELL                                                                                   
 field:ask                     timestamp=4, value=0.530618878519702                                                   
 field:ask                     timestamp=3, value=0.051028316270589014                                                
 field:ask                     timestamp=2,     value=0.11949750640509116                                                 
3 row(s) in 0.0130 seconds

hbase(main):028:0>

... 当我将结束时间戳设置为 10 时,它仍然只显示该时间戳之前的最后三个版本并抑制前面的版本:

hbase(main):028:0> get 'marketdata', 'instrument1', {COLUMN => 'field:ask', TIMERANGE => [0,10], VERSIONS=>5}
COLUMN                             CELL                                                                                   
 field:ask                     timestamp=9,     value=0.9940174211042572                                                  
 field:ask                     timestamp=8,     value=0.6941263513176372                                                  
 field:ask                     timestamp=7,     value=0.1814043435754933                                                  
3 row(s) in 0.0400 seconds

hbase(main):029:0> 

the answer is partly right. Not true: hbase STORES three versions. Proof see below.
True: you can set the maximum amount of versions which hbase returns through

alter 'marketdata', NAME => 'field', VERSIONS => 100   

But for now let's assume, I didn't change the version variable.

I have ten entries in my hbase, with timestamps from 0 to 9.
The most current timestamp is:

hbase(main):025:0> get 'marketdata', 'instrument1', {COLUMN => 'field:ask'}                                 
COLUMN                             CELL                                                                                   
 field:ask                     timestamp=9,         value=0.9940174211042572                                                  
1 row(s) in 0.0590 seconds

hbase(main):026:0> 

The values from timestamp 1 to 5 that are shown are:

hbase(main):027:0> get 'marketdata', 'instrument1', {COLUMN => 'field:ask', TIMERANGE => [0,5], VERSIONS=>5}
COLUMN                             CELL                                                                                   
 field:ask                     timestamp=4, value=0.530618878519702                                                   
 field:ask                     timestamp=3, value=0.051028316270589014                                                
 field:ask                     timestamp=2,     value=0.11949750640509116                                                 
3 row(s) in 0.0130 seconds

hbase(main):028:0>

... and when i set my end timestamp to 10, it still shows only the last three versions BEFORE that timestamp and suppresses the former ones:

hbase(main):028:0> get 'marketdata', 'instrument1', {COLUMN => 'field:ask', TIMERANGE => [0,10], VERSIONS=>5}
COLUMN                             CELL                                                                                   
 field:ask                     timestamp=9,     value=0.9940174211042572                                                  
 field:ask                     timestamp=8,     value=0.6941263513176372                                                  
 field:ask                     timestamp=7,     value=0.1814043435754933                                                  
3 row(s) in 0.0400 seconds

hbase(main):029:0> 
甲如呢乙后呢 2024-12-18 01:04:19

版本的概念严格保留在列族级别。它是一个可配置的参数。

            columnFamily.setMaxVersions(required version);

版本越多,同时从多个 HFile 读取数据的机会就会增加。

最好的方法是维护最低版本并将数据封装在一个 blob 中。

Concept of version is tightly maintained at column family level . Its a configurable parameter .

            columnFamily.setMaxVersions(required version);

The more versions one has, while fetching chances of reading data from multiple HFiles increases .

The best way would be to maintain minimum version and encapsulate data in one single blob .

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文