0.90.x版本的hbase中的檔案是儲存在hfile中的。
關於hfile檔案的詳細介紹,可以檢視這篇文章:
hfile的作用。
hfile的格式。
hfile的效能。
hfile的使用注意事項。
hfile的程式設計介面。
hfile中有乙個很重要的引數,那就是block size。如果我們寫入hfile中的某乙個value的值大於block size會怎麼樣?
於是有如下的測試**:
1:// create local file system
2: filesystem fs = new rawlocalfilesystem();
3: fs.setconf(new configuration());
4:
5:// block size = 1kb
6: hfile.writer hwriter = new hfile.writer(fs,
7:new path("hfile"), 1, (compression.algorithm) null, null);
8:
9:// create key & value, the value is 8kb, larger than 1kb
10:byte key = "www.data-works.org".getbytes();
11:byte value = new
byte[8 * 1024];
12:for (int i = 0; i < 8 * 1024; i++)
15:
16:// add values to hfile
17:for (int i = 0; i < 10; i++)
20:
21:// close hfile
22: hwriter.close();
上面的**可以看出來,每乙個value的值都是8kb,已經超過了hfile預設的1kb的block size。
實際的寫入情況是如果value大於block size,那麼就按照實際的情況來寫。
上面的測試用例執行完畢以後,整個hile檔案只有1個data block。
這個hfile的讀取**如下:
1:// create local file system
2: filesystem fs = new rawlocalfilesystem();
3: fs.initialize(uri.create("file:///"), new configuration());
4: fs.setconf(new configuration());
5: hfile.reader hreader = new hfile.reader(fs,
6:new path("hfile"), null, false);
7:
8:// loadfileinfo
9: hreader.loadfileinfo();
10:
11: hfilescanner hscanner = hreader.getscanner(false, false);
12:
13:// seek to the start position of the hfile.
14: hscanner.seekto();
15:
16:// print values.
17:int index = 1;
18:while (hscanner.next())
23:
24:// close hfile.
25: hreader.close();
上面的**將讀取hfile,並將這個檔案中的所有kv列印出來。
通過上面的測試可以看出:如果某乙個key有非常非常多的value,那麼查詢這些value就無法通過索引去快速查詢,而是需要通過遍歷進行。
另外,jira上面的hbase-3857也提出了一種新的hfile格式,hfile v2
他主要是針對現有hfile的兩個主要缺陷提出來的:
暫用過多記憶體
啟動載入時間緩慢
有興趣的朋友可以詳細了解一下。
關於HFile的思考 建立和解析HFile
毫無理由的分割線 0.90.x版本的hbase中的檔案是儲存在hfile中的。關於hfile檔案的詳細介紹,可以檢視這篇文章 這篇文章中介紹了以下五點內容 hfile的作用。hfile的格式。hfile的效能。hfile的使用注意事項。hfile的程式設計介面。hfile中有乙個很重要的引數,那就是...
關於博弈的思考
博弈,決策,永恆的主題 在博弈的過程中不要考慮是否公平,而是要考慮是否對你自己有利。這句話很值得思考。人生無時無刻不在博弈,無論是在微觀上,兩個人之間的談話 還是在巨集觀上每次人生抉擇的過程,博弈,總是在乙個恰當的視點上讓人設身處地的感受到。在博弈的過程中,公平與否,很多人都在抱怨 有的時候是與自己...
關於執行的思考
方 的實施,貫穿於軟體開發的整個過程。實施的關鍵在於執行,而執行由很多瑣碎的活動組成。在軟體開發實踐中,執行應該被放到乙個完整的體系環境中去考慮,單純強調執行本身,是無法解決執行問題的。在討論執行這個話題之前,我認為有必要先來看看東西方文化的差異。中國近代哲學史上有一種觀點,即地理環境決定了文化差異...