假如hbase表設計時,rowkey設計為「time+uid」(這裡不考慮hbase的rowkey設計合理性,只是簡單說明)。現在有乙個需求,篩選出某一uid在乙個時間段[time1,time2)的值,該怎麼辦呢?
如果是在命令列中進行查詢,可以結合startrow,endrow,filter,(column),具體如下所示:
scan 『tablename』,如果是在**中進行查詢,
configuration config =
new configuration();
config.
set("hbase.zookeeper.quorum", "10.1.1.1");//需根據hbase配置進行設定
hbaseconfiguration hbaseconfig =
new hbaseconfiguration(config);
scan scan =
new scan();
scan.setstartrow(bytes
.tobytes(time1+uid));
scan.setstoprow(bytes
.tobytes(time2+uid));
filter filter =
new rowfilter(comparefilter.compareop.equal,new regexstringcomparator(".*"
+uid));
scan.setfilter(filter);
resultscanner rs =
null;
htable table =
new htable(hbaseconfig, bytes
.tobytes(tablename));
string rowkey =
null;
rs = table.getscanner(scan);
for (result r : rs)
}
Hbase中rowkey設計原則
1.rowkey長度原則 rowkey不宜過長 建議不要超過16個位元組 若rowkey長度過長,memorystore會將部分快取資料存入記憶體降低記憶體利用率,降低檢索效率,hfile進行資料持久化時也會極大影響儲存效率 2.rowkey雜湊原則 設計目標 將資料均勻的分布在每個regionse...
Hbase中rowkey設計原則
1.熱點問題 在某一時間段,有大量的資料同時對乙個region進行操作 2.原因 對rowkey的設計不合理 對rowkey的劃分不合理 3.解決方式 rowkey是hbase的讀寫唯一標識 最大長度是64kb。4.核心原則 設計必須按照業務需求進行設計 5.長度原則 經驗 10 100位元組可以 ...
HBase學習之HBase的RowKey設計原則
hbase是三維有序儲存的,通過rowkey 行鍵 column key column family和qualifier 和timestamp 時間戳 這個三個維度可以對hbase中的資料進行快速定位。hbase中rowkey可以唯一標識一行記錄,在hbase查詢的時候,有以下幾種方式 通過get方...