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();
// }
}