hbase的demo01索引2
//原生hbase二级索引查询
public void getValueFromKey(String tables, String key) throws IOException { try { HTable table = new HTable(cfg, tables); Scan s = new Scan(); s.setFilter(new PrefixFilter(key.getBytes())); ResultScanner rs = table.getScanner(s); for (Result r : rs) { KeyValue[] kv = r.raw(); for (int i = 0; i < kv.length; i++) { System.out.print(new String(kv[i].getRow()) + " "); System.out.println(new String(kv[i].getValue())); //正则表达式 //[0-9]{0,6} 以数字长度为0到6位 。以a字符开头以b字符结尾 Pattern p = Pattern.compile("S1691[0-9]{0,6}90508102"); String wer =new String(kv[i].getRow()); String zoo= new String(kv[i].getValue()); Matcher m = p.matcher(wer.toString()); boolean b = m.matches(); System.out.println(b); //--------内嵌查询---------- /* while(b){ HTable table2 = new HTable(cfg, "tm_temp05"); Scan s2 = new Scan(); s2.setFilter(new PrefixFilter(kv[i].getRow())); ResultScanner rs2 = table2.getScanner(s2); for (Result r2 : rs2) { KeyValue[] kv2 = r2.raw(); for (int j = 0; j < kv2.length; j++) { System.out.print(new String(kv2[j].getRow()) + " 666 "); System.out.println(new String(kv2[j].getValue())+ " 777 "); } } break; }*/ while(b){ HTable table2 = new HTable(cfg, "tm_temp05"); //使用索引表的value传给数据表作为rowkey Get get = new Get(zoo.getBytes()); try { Result rs3 = table2.get(get); if (rs3.raw().length == 0) { System.out.println("不存在关键字为" + key + "的行!!"); } else { for (KeyValue kv3 : rs3.raw()) { System.out.println(new String(kv3.getKey()) + " 777 "+ new String(kv3.getValue())); } } } catch (IOException e) { e.printStackTrace(); } break; } //---------内嵌查询--------- } } //资源释放 } catch (IOException e) { e.printStackTrace(); } }
代码2
// 测试函数 public static void main(String[] args) { try { HbaseTest hbase = new HbaseTest(); // hbase.createTable("student3", "fam1"); //hbase.getAllTables();//获取所有表 //hbase.addOneRecord("student","id1","fam1","name","Jack".getBytes()); //hbase.addOneRecord("student","id1","fam1","address","HZ".getBytes()); // hbase.getValueFromKey("kkk_updown033","1231"); //Z106 1 534321 10208102 线路号,上下行,时间 hbase.getValueFromKey("xulinv03","S1691"); //Z106 1 534321 10208102 线路号,上下行,时间 // hbase.getAllData("xulinv03"); ///------S169112507190508102 //hbase.deleteRecord("student", "id1"); //hbase.deleteTable("student"); // S160 0 844321 10208102 value=00755284432110208102 //线路号,上下行,时间,日期 List<String> //41616071021123133504 12314161607102133504 //hbase.getTM03("1","0","*","10208102"); // 1231 41133504 61607102 } catch (Exception e) { e.printStackTrace(); } }
---------------------------------------------------------------------------------------------------------------------------------
测试代码片段
public class Test01 { @Test public void test03(){ String val="1234567890"; //val.substring(1,9); System.out.println( val.substring(1,9) ); } @Test public void test04(){ String val="Y80204013507102134176"; //13-15位 最长21位最少18位 //val.substring(1,9); System.out.println( val.length() ); } @Test public void test05(){ String val="Z106153432110208102"; //val.substring(1,9); System.out.println( val.substring(0,10) ); } //正则表达式匹配 //参考 :https://zhidao.baidu.com/question/552412036.html //参考 :https://www.cnblogs.com/sparkbj/articles/6207103.html @Test public void test06(){ //[0-9]{1,3} 以数字长度为1到3位 。以a字符开头以b字符结尾 Pattern p = Pattern.compile("a[0-9]{1,3}b"); Matcher m = p.matcher("a724b"); boolean b = m.matches(); System.out.println(b);// true } }
浙公网安备 33010602011771号