文中可能涉及到的API:
Hadoop/HDFS: http://hadoop.apache.org/common/docs/current/api/
HBase: http://hbase.apache.org/apidocs/index.html?overview-summary.html
Begin!
HBase的查询实现只提供两种方式:
1、按指定RowKey获取唯一一条记录,get方法�¼.org.apache.hadoop.hbase.client.Getï¼
2ãææå®çæ¡ä»¶è·åä¸æ¹è®°å½ï¼scanæ¹æ³ï¼org.apache.hadoop.hbase.client.Scanï¼
å®ç°æ¡ä»¶æ¥è¯¢åè½ä½¿ç¨çå°±æ¯scanæ¹å¼ï¼scanå¨ä½¿ç¨æ¶æ以ä¸å ç¹å¼å¾æ³¨æï¼
1ãscanå¯ä»¥éè¿setCachingä¸setBatchæ¹æ³æé«é度ï¼ä»¥ç©ºé´æ¢æ¶é´ï¼ï¼
2ãscanå¯ä»¥éè¿setStartRowä¸setEndRowæ¥éå®èå´ãèå´è¶å°ï¼æ§è½è¶é«ã
éè¿å·§å¦çRowKey设计使æ们æ¹éè·åè®°å½éåä¸çå ç´ æ¨å¨ä¸èµ·ï¼åºè¯¥å¨åä¸ä¸ªRegionä¸ï¼ï¼å¯ä»¥å¨éåç»ææ¶è·å¾å¾å¥½çæ§è½ã
3ãscanå¯ä»¥éè¿setFilteræ¹æ³æ·»å è¿æ»¤å¨ï¼è¿ä¹æ¯å页ãå¤æ¡ä»¶æ¥è¯¢çåºç¡ã
ä¸é¢ä¸¾ä¸ªå½¢è±¡çä¾åï¼
æ们å¨è¡¨ä¸åå¨çæ¯æ件信æ¯ï¼æ¯ä¸ªæ件æ5个å±æ§ï¼æ件idï¼longï¼å ¨å±å¯ä¸ï¼ãå建æ¶é´ï¼longï¼ãæ件åï¼Stringï¼ãåç±»åï¼Stringï¼ãææè ï¼Userï¼ã
æ们å¯ä»¥è¾å ¥çæ¥è¯¢æ¡ä»¶ï¼æ件å建æ¶é´åºé´ï¼æ¯å¦ä»20120901å°20120914æé´å建çæ件ï¼ï¼æ件åï¼âä¸å½å¥½å£°é³âï¼ï¼åç±»ï¼â综èºâï¼ï¼ææè ï¼âæµæ±å«è§âï¼ã
å设å½åæ们ä¸å ±æå¦ä¸æ件ï¼
å 容å表
ID CreateTime NameCategoryUserID
1 20120902ä¸å½å¥½å£°é³ç¬¬1æç»¼èº 1
2 20120904ä¸å½å¥½å£°é³ç¬¬2æç»¼èº 1
3 20120906ä¸å½å¥½å£°é³å¤å¡èµç»¼èº 1
4 20120908ä¸å½å¥½å£°é³ç¬¬3æç»¼èº 1
5 20120910ä¸å½å¥½å£°é³ç¬¬4æç»¼èº 1
6 20120912ä¸å½å¥½å£°é³éæé访 综èºè±çµ®2
7 20120914ä¸å½å¥½å£°é³ç¬¬5æç»¼èº 1
8 20120916ä¸å½å¥½å£°é³å½å¶è±çµ® 综èºè±çµ®2
9 20120918å¼ ç®ç¬å®¶ä¸è®¿ è±çµ® 3
10 20120920å å¤å®åè¶å¹¿å 综èºå¹¿å4
è¿éUserIDåºè¯¥å¯¹åºå¦ä¸å¼ User表ï¼æä¸ååºãæ们åªéç¥éUserIDçå«ä¹ï¼
1代表 æµæ±å«è§ï¼ 2代表 好声é³å§ç»ï¼ 3代表 XXå¾®åï¼ 4代表 èµå©åã
è°ç¨æ¥è¯¢æ¥å£çæ¶åå°ä¸è¿°5个æ¡ä»¶åæ¶è¾å ¥find(20120901,20121001,"ä¸å½å¥½å£°é³","综èº","æµæ±å«è§")ã
æ¤æ¶æ们åºè¯¥å¾å°è®°å½åºè¯¥æ第1ã2ã3ã4ã5ã7æ¡ã第6æ¡ç±äºä¸å±äºâæµæ±å«è§âåºè¯¥ä¸è¢«éä¸ã
æ们å¨è®¾è®¡RowKeyæ¶å¯ä»¥è¿æ ·åï¼éç¨UserID + CreateTime + FileIDç»ærowKeyï¼è¿æ ·æ¢è½æ»¡è¶³å¤æ¡ä»¶æ¥è¯¢ï¼åè½æå¾å¿«çæ¥è¯¢é度ã
éè¦æ³¨æ以ä¸å ç¹ï¼
1ãæ¯æ¡è®°å½çRowKeyï¼æ¯ä¸ªå段é½éè¦å¡«å å°ç¸åé¿åº¦ãåå¦é¢ææ们æå¤æ10ä¸é级çç¨æ·ï¼åuserIDåºè¯¥ç»ä¸å¡«å è³6ä½ï¼å¦000001ï¼000002...
2ãç»å°¾æ·»å å ¨å±å¯ä¸çFileIDçç¨æä¹æ¯ä½¿æ¯ä¸ªæ件对åºçè®°å½å ¨å±å¯ä¸ãé¿å å½UserIDä¸CreateTimeç¸åæ¶ç两个ä¸åæ件记å½ç¸äºè¦çã
æç §è¿ç§RowKeyåå¨ä¸è¿°æ件记å½ï¼å¨HBase表ä¸æ¯ä¸é¢çç»æï¼
rowKeyï¼userID 6 + time 8 + fileID 6ï¼ namecategory ....
00000120120902000001
00000120120904000002
00000120120906000003
00000120120908000004
00000120120910000005
00000120120914000007
00000220120912000006
00000220120916000008
00000320120918000009
00000420120920000010
ææ ·ç¨è¿å¼ 表ï¼
å¨å»ºç«ä¸ä¸ªscan对象åï¼æ们setStartRow(00000120120901)ï¼setEndRow(00000120120914)ã
è¿æ ·ï¼scanæ¶åªæ«æuserID=1çæ°æ®ï¼ä¸æ¶é´èå´éå®å¨è¿ä¸ªæå®çæ¶é´æ®µå ï¼æ»¡è¶³äºæç¨æ·ä»¥åææ¶é´èå´å¯¹ç»æççéã并ä¸ç±äºè®°å½éä¸åå¨ï¼æ§è½å¾å¥½ã
ç¶å使ç¨SingleColumnValueFilterï¼org.apache.hadoop.hbase.filter.SingleColumnValueFilterï¼ï¼å ±4个ï¼åå«çº¦ænameçä¸ä¸éï¼ä¸categoryçä¸ä¸éã满足æåæ¶ææ件å以ååç±»åçåç¼å¹é ã
ï¼æ³¨æï¼ä½¿ç¨SingleColumnValueFilterä¼å½±åæ¥è¯¢æ§è½ï¼å¨çæ£å¤çæµ·éæ°æ®æ¶ä¼æ¶èå¾å¤§çèµæºï¼ä¸éè¦è¾é¿çæ¶é´ã
å¨åç»çåæä¸æå°å¤ä¸¾å ç§åºç¨åºæ¯ä¸rowKeyçï¼å¯ä»¥æ»¡è¶³ç®åæ¡ä»¶ä¸æµ·éæ°æ®ç¬æ¶è¿åçæ¥è¯¢åè½ï¼
å¦æéè¦å页è¿å¯ä»¥åå ä¸ä¸ªPageFilteréå¶è¿åè®°å½ç个æ°ã
以ä¸ï¼æ们å®æäºé«æ§è½çæ¯æå¤æ¡ä»¶æ¥è¯¢çHBase表ç»æ设计ã
说明:①纯前端多条件查询,不涉及后端请求
②可多条件精确匹配和单个条件模糊匹配(或则多个条件模糊匹配)
③不懂看看注释
转自: 前端多条件查询数据处理
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)