2013-02-13 140 views
1

我正在研究一個項目,我想從HBase系統讀取數據。我讀過有各種可用的HBase客戶端,默認的Java客戶端,Thrift,Avro等。HBase不同的客戶端

現在我很困惑,如果我選擇默認的Java客戶端,那麼我將能夠讀取存儲在使用節儉客戶端的HBase?

我想明白,如果我使用thrift客戶端從HBase讀取數據,那麼它將使用thrift反序列化器將數據從二進制類型轉換爲適當的類型?如果這是真的,那麼如果我使用HBase默認客戶端讀取數據,使用thrift客戶端加載的數據將被損壞?

感謝您的幫助! 〜羅希特

+0

Guyz請讓我知道如果您對理解問題有任何疑問。 – Rohit 2013-02-14 05:58:41

回答

3

如果您正在開發Java中的HBase的應用程序,我建議使用原始的HBase API - 這是更強大的比節儉,REST,Avro公司等

Java的API的HBase直接與通信HBase數據庫通過Zookeepers。

如果使用Java,那麼你必須去的其他協議之一 - 節儉,REST,Avro公司等。例如,Python有節儉一些圖書館(我建議HappyBase)以及休息。 Ruby和其他語言也是如此。

如果您使用Java API(直接)插入數據,那麼您將能夠使用Python或Ruby上的Thrift檢索完全相同的數據。您可能需要小心數據結構/格式(HBase將所有內容存儲爲字節),因此請小心存儲字符串,整數,Unicode字符串等。

+0

謝謝蘇曼。它真的有幫助!所以只是要清楚,並確保我正確理解你。 Thrift客戶端接口不使用節儉序列化/反序列化,它使用相同的機制來進行HBase Java客戶端使用的序列化和反序列化? – Rohit 2013-02-15 15:23:56

+0

只是爲了繼續我的最後一個問題,當我嘗試插入一個int然後將其轉換爲二進制文件時,即使HBase commmand行客戶端也會使用完全相同的序列化機制? – Rohit 2013-02-15 15:26:55

+0

啊,這是一個有趣的問題 - 我還沒有玩過序列化部分?你插入的只是整數/字符串或完整對象嗎? – Suman 2013-02-15 15:55:46