2011-10-21 35 views
5

Nếu tôi muốn để chèn vào một bảng:Có số phiên bản tối đa trong HBase không?

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 

tôi có thể liệt kê trong chương HBase shell số lượng tối đa của phiên bản để có được fom một hàng cụ thể nhưng khi tôi chỉ định ví dụ '100' nó trở lại chỉ có 4 tôi phiên bản ... Có tối đa không?

Trả lời

11

Nó chỉ trả về 4 phiên bản vì họ cột được đặt để lưu tối đa 4 phiên bản.

Nếu bạn muốn lưu trữ nhiều phiên bản, bạn cần phải thay đổi CF. Sử dụng vỏ HBase:

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

Giá trị mặc định cho các phiên bản tối đa là 1 *:

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

* Có vẻ như giá trị mặc định cho các phiên bản tối đa được đổi 3-1 tại một số điểm.

2

câu trả lời đúng một phần. Không đúng: hbase STORES ba phiên bản. Bằng chứng xem dưới đây. Đúng: bạn có thể đặt số tiền tối đa của phiên bản mà HBase trả về thông qua

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

Nhưng bây giờ chúng ta hãy giả định, tôi không thay đổi biến phiên bản.

tôi có mười mục trong HBase tôi, với thời gian từ 0 đến 9. Các dấu thời gian mới nhất là:

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> 

Các giá trị từ timestamp 1-5 được hiển thị là:

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> 

... và khi tôi đặt dấu thời gian kết thúc thành 10, nó vẫn chỉ hiển thị ba phiên bản trước TRƯỚC KHI dấu thời gian và loại bỏ các phiên bản trước:

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> 
+1

chờ, vậy làm cách nào bạn có thể thấy phiên bản 4,3,2 và 9,8,7 nếu hbase chỉ lưu trữ 3 phiên bản? Có lẽ vỏ chỉ trở về 3, vì lý do gì đó, nhưng dường như bạn đã 'chứng minh' rằng có nhiều phiên bản hơn. Câu trả lời thực sự cũng phức tạp hơn vì cách mà hbase xóa các phiên bản: nó không thực sự. Nếu bạn xóa dữ liệu một cách rõ ràng, nó sẽ thêm bia mộ và bạn sẽ không thấy bất kỳ dữ liệu nào trước bia mộ. Tất cả các dữ liệu khác sẽ có sẵn (và tất cả dữ liệu sẽ được lưu trữ) cho đến khi nén chặt lớn tiếp theo sẽ ghi đè tệp lưu trữ và chỉ giữ đúng số lượng phiên bản. – David

+0

Xin chào David, bạn đã downvoted dựa trên phản hồi được chỉnh sửa bởi codingFoo. – user1052080

+2

Câu trả lời này vẫn còn một chút sai lệch. Những gì bạn đang thiếu là vấn đề nén chặt. Khi HBase lưu trữ một giá trị, nó chỉ gắn nó vào tệp. Nó không bao giờ xóa dữ liệu.Để thực hiện xóa, chúng gắn thêm một bia mộ về cơ bản nói rằng một giá trị nên được bỏ qua. Bây giờ, khi một sự nén chặt xuất hiện, tệp sẽ được viết lại và không phải phiên bản cũ hoặc phiên bản đã xóa nào sẽ được viết lại vào tệp mới. Vì vậy, có một cửa sổ thời gian khi bạn sẽ có thể xem các phiên bản cũ, nhưng cửa sổ thời gian đó bị giới hạn và bạn không nên dựa vào các phiên bản cũ đang có. – David

0

Khái niệm về phiên bản được duy trì chặt chẽ ở cấp độ gia đình cột. Một tham số cấu hình của nó.

  columnFamily.setMaxVersions(required version); 

Phiên bản khác có, trong khi tìm nạp cơ hội đọc dữ liệu từ nhiều lần tăng HF.

Cách tốt nhất là duy trì phiên bản tối thiểu và đóng gói dữ liệu trong một đốm màu duy nhất.

Các vấn đề liên quan