(五)阅读推荐

1.粗略查询

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.KeyValue;
import org.apache.hadoop.hbase.MasterNotRunningException;
import org.apache.hadoop.hbase.ZooKeeperConnectionException;
import org.apache.hadoop.hbase.client.Delete;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.HBaseAdmin;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.HTablePool;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.ResultScanner;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.filter.Filter;
import org.apache.hadoop.hbase.filter.FilterList;
import org.apache.hadoop.hbase.filter.SingleColumnValueFilter;
import org.apache.hadoop.hbase.filter.CompareFilter.CompareOp;
import org.apache.hadoop.hbase.util.Bytes;
import org.netlib.blas.Srot;
import shapeless.newtype;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.HTablePool;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.ResultScanner;
import org.apache.hadoop.hbase.client.Scan;
public class User_Book_Scan {
     /*
      * 查询:先根据该用户点击的bookid查找用户id( b-u 表),再根据用户id查找该用户看过的书籍id即bookid(u-b表)
      */
     static Configuration cfg = HBaseConfiguration.create();
     static List<String> userlist = new ArrayList<String>();
     static List<String> booklist = new ArrayList<String>();
     
     public static void main(String[] args) throws Exception {
          System.out.println("bookid select userid");
          System.out.println("b_u table");
          User_Book_Scan.onescan("b_u", "003", "user");
          System.out.println("userlist:" + userlist.toString());
          System.out.println("userid select bookid");
          System.out.println("u_b  table");
          User_Book_Scan.twoscan("u_b","book");
          
          System.out.println("booklist:"+booklist.toString());
          System.out.println("001: " + Collections.frequency(booklist, "001"));
          List<String> resultlist=new ArrayList<String>();
          resultlist.addAll(booklist);
          System.out.println("resultlist:"+resultlist.toString());
          
          List<String> removelist=new ArrayList<String>();
          removelist=removeDuplicate(booklist);
          System.out.println("removelist:"+removelist.toString());
          for(int i =0 ;i<removelist.size();i++){
               
               System.out.println(removelist.get(i)+" : "+Collections.frequency(resultlist,removelist.get(i)));
               
               
          }
          
     }
     public   static   List  removeDuplicate(List list)  {      
            for  ( int  i  =   0 ; i  <  list.size()  -   1 ; i ++ )  {      
                for  ( int  j  =  list.size()  -   1 ; j  >  i; j -- )  {      
                     if  (list.get(j).equals(list.get(i)))  {      
                        list.remove(j);      
                      }       
                  }       
                }       
              return list;      
          } 
     @SuppressWarnings("deprecation")
     public static void onescan(String tablename, String row, String family) throws Exception {
          /*
           * HTable table = new HTable(cfg, tablename); Scan s = new Scan();
           * ResultScanner rs = table.getScanner(s); Integer condition=new
           * Integer((int) (Math.random()*3+1)); String cd=condition.toString();
           *
           * for (Result r : rs) { System.out.println("Scan:" + r); }
           */
          HTable table = new HTable(cfg, tablename);
          // 执行函数
          Result result = table.getRowOrBefore(Bytes.toBytes(row), Bytes.toBytes(family));
          // 进行循环
          List<String> list = new ArrayList<String>();
          KeyValue[] keyValues = result.raw();
          
          for (KeyValue kv : keyValues) {
               System.out.println(Bytes.toString(kv.getRow()));
               System.out.println(Bytes.toString(kv.getFamily()));
               System.out.println(Bytes.toString(kv.getQualifier()));
               System.out.println(Bytes.toString(kv.getValue()));
               System.out.println(Bytes.toString(kv.getKey()));
               
               list.add(Bytes.toString(kv.getQualifier()));
               
               userlist.add(Bytes.toString(kv.getQualifier()));
               
          
               
          }
          System.out.println(list.toString());
          table.close();
     }
     @SuppressWarnings("deprecation")
     public static void twoscan(String tablename,String family) throws Exception {
          /*
           * HTable table = new HTable(cfg, tablename); Scan s = new Scan();
           * ResultScanner rs = table.getScanner(s); Integer condition=new
           * Integer((int) (Math.random()*3+1)); String cd=condition.toString();
           *
           * for (Result r : rs) { System.out.println("Scan:" + r); }
           */
          HTable table = new HTable(cfg, tablename);
          
          
          for (int i=0;i<userlist.size();i++) {
               // 执行函数
               Result result = table.getRowOrBefore(Bytes.toBytes(userlist.get(i)), Bytes.toBytes(family));
               // 进行循环
               List<String> list = new ArrayList<String>();
               KeyValue[] keyValues = result.raw();
               for (KeyValue kv : keyValues) {
                    System.out.println(Bytes.toString(kv.getRow()));
                    System.out.println(Bytes.toString(kv.getFamily()));
                    System.out.println(Bytes.toString(kv.getQualifier()));
                    System.out.println(Bytes.toString(kv.getValue()));
                    System.out.println(Bytes.toString(kv.getKey()));
                    
                    list.add(Bytes.toString(kv.getQualifier()));
                    
                    booklist.add(Bytes.toString(kv.getQualifier()));                    
               }
               System.out.println(list.toString());  
          }
          table.close();
     }
}

结果

2. 使用cell 

//=========================================组合键查询时间段的数据
				/*
				 * 1.创建表access_log
				 * 2.插入数据
				 * 3.实现查询
				 */
				     //建表
			             //Himp.createTable("access_log", fimaly);
			         //插入 
//			       for(int i=0;i<100;i++){
//			             long time=System.currentTimeMillis();
//			             String newtime=String.valueOf(time);
//			             //System.out.println(time);
//			             if(i<100&&i>=10){
//			            	     Himp.putData("access_log", newtime+"00"+i,"http", "ip", "192.168.0."+i);
//					             Himp.putData("access_log", newtime+"00"+i,"http", "domain", i-1+"~"+i);
//					             Himp.putData("access_log", newtime+"00"+i,"http", "url", "www."+i+".com");
//					             Himp.putData("access_log", newtime+"00"+i,"http", "referer", "Alibaba"+i);
//					             
//					             Himp.putData("access_log", newtime+"00"+i,"user", "browser_cookie", "%@4235ab4b"+i);
//					             Himp.putData("access_log", newtime+"00"+i,"user", "login_id", "00"+i);
//	                     }else {
//	                    	     Himp.putData("access_log", newtime+"000"+i,"http", "ip", "192.168.0."+i);
//	                    	     Himp.putData("access_log", newtime+"000"+i,"http", "domian",  i-1+"~"+i);
//	                    	     Himp.putData("access_log", newtime+"000"+i,"http", "url", "www."+i+".com");
//	                    	     Himp.putData("access_log", newtime+"000"+i,"http", "referer", "Alibaba"+i);
//	                    	     
//	                    	     Himp.putData("access_log", newtime+"000"+i,"user", "browser_cookie", "%@4235ab4b"+i);
//					             Himp.putData("access_log", newtime+"000"+i,"user", "login_id", "000"+i);
//	                     }
//					     
//			       }
			         //查询
			              
//						    Date d = new Date(LONG_AT_THE_EARLIEST_TIME);  
//					        Calendar c = Calendar.getInstance();  
//					        c.setTime(d);  
//					        //此处设置查询时间段
//					        c.add(Calendar.SECOND, 10);  
//					        String endtime=String.valueOf(c.getTimeInMillis());
//					        System.out.println(c.getTimeInMillis()); 
//			             Himp.GetDateFromCombinationKey("access_log", AT_THE_EARLIEST_TIME,endtime);

			
			
			 //============================================================================================



/**
	 * @param tablename
	 * @param strrowkey
	 * @param endrowkey
	 * 暂且查看一分钟的吧
	 */
	@Override
	public void GetDateFromCombinationKey(String tablename, String strrowkey,String endrowkey) throws IOException {
		init();
		Table table= connection.getTable(TableName.valueOf(tablename));
		Scan scan=new Scan();
		scan.setStartRow(Bytes.toBytes(strrowkey));
		scan.setStopRow(Bytes.toBytes(endrowkey));
		ResultScanner rs=table.getScanner(scan);
		for(Result r:rs){
			for(Cell cell:r.rawCells()){
//				if(strrowkey.equals(new String(CellUtil.cloneRow(cell)).substring(0, 13))){
				System.out.print(" Rowkey: "+new String(CellUtil.cloneRow(cell)));
				System.out.print(" column: "+new String(CellUtil.cloneFamily(cell)));
				System.out.print(" :qualifier: "+new String(CellUtil.cloneQualifier(cell)));
				System.out.print(" value: "+new String(CellUtil.cloneValue(cell)));
				System.out.println(" timestamp: "+cell.getTimestamp());
//				}
					
			}
		}
		table.close();//释放资源
	}


}


//=======================================================================================================

 /**
	  * 位置案例,输出一个地方的上级位置和下级位置
	  * @param tablename 
	                 表名
	  * @param spacename 
	                 需要查询的位置
	  */
	@SuppressWarnings("deprecation")
	@Override
	public void GetDateFromSpaceNeed(String tablename, String sapcename) {
		init();
		Table table = null;
		//创建一个list用来装student_course_table表中一行row所对应的value(其实就是获取列限定符)
		List<String> parentplace = new ArrayList<String>();
		//用一个list容器来装推荐的书籍(不重复输出)
		Set<String> childplace = new HashSet<String>();
		List<String> cityname = new ArrayList<String>();
		List<String> childcityname = new ArrayList<String>();
        String rowkey="";
		switch(sapcename){
				case "chengdu":
					rowkey="5";
		}
			
				try {
					if(tablename!=null){
					table = connection.getTable(TableName.valueOf(tablename));
					

					
					/************************************************************************/
				         Get get = new Get(Bytes.toBytes(rowkey));
				         get.addFamily(Bytes.toBytes("child"));
				         Result res = table.get(get);
				         KeyValue[] kvs=res.raw();  
				            for(KeyValue kv:kvs)  
				            {  
				            	
				            	childplace.add(Bytes.toString(kv.getQualifier()));
				            	//System.out.println(Bytes.toString(kv.getQualifier())+"->"+Bytes.toString(kv.getValue()));
					        	      
				            }  

				System.out.println("下级城市代号:"+childplace);
				
				
		
	    /******************************************************/
		  for(String gainuserid1 : childplace){
		         Get get3 = new Get(Bytes.toBytes(gainuserid1));
		         get3.addFamily(Bytes.toBytes(" "));
		         Result res3 = table.get(get3);
		         KeyValue[] kvs3=res3.raw();  
		            for(KeyValue kv3:kvs3)  
		            {  
		            	if(!rowkey.equals(Bytes.toString(kv3.getFamily()))){
		            		 childcityname.add(Bytes.toString(kv3.getValue()));
			        	      
			        	}
		            }  

		}
			
			  System.out.println("下级城市名字:"+ childcityname );
			  //table.close();
			  /********************************************************************/
			  //table = connection.getTable(TableName.valueOf(tablename));
			  //====================================================
				Get get1 = new Get(Bytes.toBytes(rowkey));
		         get1.addFamily(Bytes.toBytes("parent"));
		         Result res1 = table.get(get1);
		         KeyValue[] kvs1=res1.raw();  
		            for(KeyValue kv1:kvs1)  
		            {  
		            	if(!" ".equals(Bytes.toString(kv1.getQualifier()))){
		            	parentplace.add(Bytes.toString(kv1.getQualifier()));
		            	//System.out.println(Bytes.toString(kv1.getQualifier())+"->"+Bytes.toString(kv1.getValue()));
		            	}
			        	      
		            }  

		System.out.println("上级城市代号:"+parentplace);
		       /***********************************************************************/
		  for(String gainuserid2 : parentplace){
			  
			  System.out.println("parent result is ->  "+gainuserid2);
	         Get get0 = new Get(Bytes.toBytes(gainuserid2));
	         System.out.println("get0 ->  "+get0);
	         get0.addFamily(Bytes.toBytes(" "));
	         Result res0 = table.get(get0);
	         KeyValue[] kvs0=res0.raw();  
	            for(KeyValue kv00:kvs0)  
	            {  
	                      		cityname.add(Bytes.toString(kv00.getValue()));
                                // System.out.println("测试结果 :"+Bytes.toString(kv0.getValue()));
	            }  

	}
		
		  System.out.println("上级城市名字:"+cityname);
	
		//======================================================================
		
				table.close();
				
				}
				} catch (IOException e) {
					e.printStackTrace();
				}

//				try {
//					table.close();
//				} catch (IOException e) {
//					e.printStackTrace();
//				}

		
	}
	






























			 
原文地址:https://www.cnblogs.com/apppointint/p/8885310.html