2017-04-10 123 views
1

請幫我理解在HBase中存儲信息的最佳方式。 基本上,我有一個rowkey,如hashed_uid + date + session_id,其中包含持續時間,日期,時間,位置,深度等指標。 我讀了很多材料,我有點困惑。人建議少列家人有更好的表現,所以我面臨的三個選項中進行選擇:hbase設計concat長鍵值對vs多列

  1. 讓每個指標在一排坐在像rowkey_key cf1->alias1:value

  2. 有很多列像rowkey cf1->key1:val1, cf1->key2:val2 ...

  3. 將所有鍵值對編碼爲一個大字符串,如rowkey cf1->"k1:v1,k2:v2,k3:v3..."

預先感謝您。我不知道該選哪個。我的HBase設計的目標是爲用戶分析輸出的增量窗口函數做準備,如過去60天的百分位數,參與度和統計摘要。很可能,我會爲此使用配置單元。

+0

我首先會問你爲什麼要使用hbase。 – Andrew

+0

@Andrew是的,我目前的進程是在HDFS中,而且容量太大,無法處理。其次,我只發現HBASE可用於更好的增量計算和快照。 – Tadelicious

回答

2

可能你對列家族和列的命名的相似性感到困惑。這些概念在HBase中是不同的。列族由幾列組成。當您只需要讀取某些類型的列時,此設計將提高訪問數據的速度。例如,你有原始數據和處理過的數據。如果處理後的數據存儲在分離的列系列中,則不會涉及原始數據。您可以部分地爲每個行鍵設置任意數量的列;它應該存儲在一個地區,不超過10GB。設計取決於你是什麼:當你需要存儲大量每行按鍵 數據,不能存儲在一個區域的

  • 第一個變種有沒有辦法。超過 10GB。
  • 其次,當您需要獲取每個
    單行讀取關鍵字只有幾個指標時,情況良好。
  • 最後一個變體適用於您總是獲得每個單個讀取每行密鑰的所有度量標準。