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
    }

}

 

posted @ 2018-07-13 15:13  聚云  阅读(117)  评论(0)    收藏  举报