zoukankan      html  css  js  c++  java
  • hbase RowFilter如何根据rowkey查询以及实例实现代码 habase模糊查询【转】

    RowFilter用于过滤row key
    Operator Description
    LESS 小于
    LESS_OR_EQUAL 小于等于
    [EQUAL 等于
    NOT_EQUAL 不等于
    GREATER_OR_EQUAL 大于等于
    GREATER 大于
    NO_OP 排除所有
    Comparator Description
    BinaryComparator 使用Bytes.compareTo()比较
    BinaryPrefixComparator 和BinaryComparator差不多,从前面开始比较
    NullComparator Does not compare against an actual value but whether a given one is null, or not  null.
    BitComparator Performs a bitwise comparison, providing a BitwiseOp class with OR, and XORoperators.
    RegexStringComparator 正则表达式
    SubstringComparator 把数据当成字符串,用contains()来判断
    1. import java.io.IOException;
    2. import org.apache.hadoop.conf.Configuration;
    3. import org.apache.hadoop.hbase.HBaseConfiguration;
    4. import org.apache.hadoop.hbase.HColumnDescriptor;
    5. import org.apache.hadoop.hbase.HTableDescriptor;
    6. import org.apache.hadoop.hbase.client.HBaseAdmin;
    7. import org.apache.hadoop.hbase.client.HTable;
    8. import org.apache.hadoop.hbase.client.Put;
    9. import org.apache.hadoop.hbase.client.Result;
    10. import org.apache.hadoop.hbase.client.ResultScanner;
    11. import org.apache.hadoop.hbase.client.Scan;
    12. import org.apache.hadoop.hbase.filter.BinaryComparator;
    13. import org.apache.hadoop.hbase.filter.BinaryPrefixComparator;
    14. import org.apache.hadoop.hbase.filter.CompareFilter;
    15. import org.apache.hadoop.hbase.filter.Filter;
    16. import org.apache.hadoop.hbase.filter.RegexStringComparator;
    17. import org.apache.hadoop.hbase.filter.RowFilter;
    18. import org.apache.hadoop.hbase.filter.SubstringComparator;
    19. public class TestHbaseRowFilter {
    20.         String tableName = "test_row_filter";
    21.         Configuration config = HBaseConfiguration.create();
    22.         /**
    23.          * 部分代码来自hbase权威指南
    24.          * @throws IOException
    25.          */
    26.         public void testRowFilter() throws IOException {
    27.                 HTable table = new HTable(config, tableName);
    28.                 Scan scan = new Scan();
    29.                 System.out.println("小于等于row010的行");
    30.                 Filter filter1 = new RowFilter(CompareFilter.CompareOp.LESS_OR_EQUAL,
    31.                                 new BinaryComparator("row010".getBytes()));
    32.                 scan.setFilter(filter1);
    33.                 ResultScanner scanner1 = table.getScanner(scan);
    34.                 for (Result res : scanner1) {
    35.                         System.out.println(res);
    36.                 }
    37.                 scanner1.close();
    38.                 System.out.println("正则获取结尾为5的行");
    39.                 Filter filter2 = new RowFilter(CompareFilter.CompareOp.EQUAL,
    40.                                 new RegexStringComparator(".*5[        DISCUZ_CODE_0        ]quot;));
    41.                 scan.setFilter(filter2);
    42.                 ResultScanner scanner2 = table.getScanner(scan);
    43.                 for (Result res : scanner2) {
    44.                         System.out.println(res);
    45.                 }
    46.                 scanner2.close();
    47.                 System.out.println("包含有5的行");
    48.                 Filter filter3 = new RowFilter(CompareFilter.CompareOp.EQUAL,
    49.                                 new SubstringComparator("5"));
    50.                 scan.setFilter(filter3);
    51.                 ResultScanner scanner3 = table.getScanner(scan);
    52.                 for (Result res : scanner3) {
    53.                         System.out.println(res);
    54.                 }
    55.                 scanner3.close();
    56.                 System.out.println("开头是row01的");
    57.                 Filter filter4 = new RowFilter(CompareFilter.CompareOp.EQUAL,
    58.                                 new BinaryPrefixComparator("row01".getBytes()));
    59.                 scan.setFilter(filter4);
    60.                 ResultScanner scanner4 = table.getScanner(scan);
    61.                 for (Result res : scanner4) {
    62.                         System.out.println(res);
    63.                 }
    64.                 scanner3.close();
    65.         }
    66.         /**
    67.          * 初始化数据
    68.          */
    69.         public void init() {
    70.                 // 创建表和初始化数据
    71.                 try {
    72.                         HBaseAdmin admin = new HBaseAdmin(config);
    73.                         if (!admin.tableExists(tableName)) {
    74.                                 HTableDescriptor htd = new HTableDescriptor(tableName);
    75.                                 HColumnDescriptor hcd1 = new HColumnDescriptor("data");
    76.                                 htd.addFamily(hcd1);
    77.                                 HColumnDescriptor hcd2 = new HColumnDescriptor("url");
    78.                                 htd.addFamily(hcd2);
    79.                                 admin.createTable(htd);
    80.                         }
    81.                         HTable table = new HTable(config, tableName);
    82.                         table.setAutoFlush(false);
    83.                         int count = 50;
    84.                         for (int i = 1; i <= count; ++i) {
    85.                                 Put p = new Put(String.format("row%03d", i).getBytes());
    86.                                 p.add("data".getBytes(), String.format("col%01d", i % 10)
    87.                                                 .getBytes(), String.format("data%03d", i).getBytes());
    88.                                 p.add("url".getBytes(), String.format("col%01d", i % 10)
    89.                                                 .getBytes(), String.format("url%03d", i).getBytes());
    90.                                 table.put(p);
    91.                         }
    92.                         table.close();
    93.                 } catch (IOException e) {
    94.                         e.printStackTrace();
    95.                 }
    96.         }
    97.         /**
    98.          * @param args
    99.          * @throws IOException
    100.          */
    101.         public static void main(String[] args) throws IOException {
    102.                 TestHbaseRowFilter test = new TestHbaseRowFilter();
    103.                 test.init();
    104.                 test.testRowFilter();
    105.         }
    106. }
    复制代码
    输出结果
    1. 小于等于row010的行
    2. keyvalues={row001/data:col1/1364133382268/Put/vlen=7, row001/url:col1/1364133382268/Put/vlen=6}
    3. keyvalues={row002/data:col2/1364133382268/Put/vlen=7, row002/url:col2/1364133382268/Put/vlen=6}
    4. keyvalues={row003/data:col3/1364133382268/Put/vlen=7, row003/url:col3/1364133382268/Put/vlen=6}
    5. keyvalues={row004/data:col4/1364133382268/Put/vlen=7, row004/url:col4/1364133382268/Put/vlen=6}
    6. keyvalues={row005/data:col5/1364133382268/Put/vlen=7, row005/url:col5/1364133382268/Put/vlen=6}
    7. keyvalues={row006/data:col6/1364133382268/Put/vlen=7, row006/url:col6/1364133382268/Put/vlen=6}
    8. keyvalues={row007/data:col7/1364133382268/Put/vlen=7, row007/url:col7/1364133382268/Put/vlen=6}
    9. keyvalues={row008/data:col8/1364133382268/Put/vlen=7, row008/url:col8/1364133382268/Put/vlen=6}
    10. keyvalues={row009/data:col9/1364133382268/Put/vlen=7, row009/url:col9/1364133382268/Put/vlen=6}
    11. keyvalues={row010/data:col0/1364133382268/Put/vlen=7, row010/url:col0/1364133382268/Put/vlen=6}
    12. 正则获取结尾为5的行
    13. keyvalues={row005/data:col5/1364133382268/Put/vlen=7, row005/url:col5/1364133382268/Put/vlen=6}
    14. keyvalues={row015/data:col5/1364133382268/Put/vlen=7, row015/url:col5/1364133382268/Put/vlen=6}
    15. keyvalues={row025/data:col5/1364133382268/Put/vlen=7, row025/url:col5/1364133382268/Put/vlen=6}
    16. keyvalues={row035/data:col5/1364133382268/Put/vlen=7, row035/url:col5/1364133382268/Put/vlen=6}
    17. keyvalues={row045/data:col5/1364133382268/Put/vlen=7, row045/url:col5/1364133382268/Put/vlen=6}
    18. 包行有5的行
    19. keyvalues={row005/data:col5/1364133382268/Put/vlen=7, row005/url:col5/1364133382268/Put/vlen=6}
    20. keyvalues={row015/data:col5/1364133382268/Put/vlen=7, row015/url:col5/1364133382268/Put/vlen=6}
    21. keyvalues={row025/data:col5/1364133382268/Put/vlen=7, row025/url:col5/1364133382268/Put/vlen=6}
    22. keyvalues={row035/data:col5/1364133382268/Put/vlen=7, row035/url:col5/1364133382268/Put/vlen=6}
    23. keyvalues={row045/data:col5/1364133382268/Put/vlen=7, row045/url:col5/1364133382268/Put/vlen=6}
    24. keyvalues={row050/data:col0/1364133382268/Put/vlen=7, row050/url:col0/1364133382268/Put/vlen=6}
    25. 开头是row01的
    26. keyvalues={row010/data:col0/1364133382268/Put/vlen=7, row010/url:col0/1364133382268/Put/vlen=6}
    27. keyvalues={row011/data:col1/1364133382268/Put/vlen=7, row011/url:col1/1364133382268/Put/vlen=6}
    28. keyvalues={row012/data:col2/1364133382268/Put/vlen=7, row012/url:col2/1364133382268/Put/vlen=6}
    29. keyvalues={row013/data:col3/1364133382268/Put/vlen=7, row013/url:col3/1364133382268/Put/vlen=6}
    30. keyvalues={row014/data:col4/1364133382268/Put/vlen=7, row014/url:col4/1364133382268/Put/vlen=6}
    31. keyvalues={row015/data:col5/1364133382268/Put/vlen=7, row015/url:col5/1364133382268/Put/vlen=6}
    32. keyvalues={row016/data:col6/1364133382268/Put/vlen=7, row016/url:col6/1364133382268/Put/vlen=6}
    33. keyvalues={row017/data:col7/1364133382268/Put/vlen=7, row017/url:col7/1364133382268/Put/vlen=6}
    34. keyvalues={row018/data:col8/1364133382268/Put/vlen=7, row018/url:col8/1364133382268/Put/vlen=6}
    35. keyvalues={row019/data:col9/1364133382268/Put/vlen=7, row019/url:col9/1364133382268/Put/vlen=6}
    复制代码
     
     
     
    RowFilter用于过滤row key
    Operator Description
    LESS 小于
    LESS_OR_EQUAL 小于等于
    [EQUAL 等于
    NOT_EQUAL 不等于
    GREATER_OR_EQUAL 大于等于
    GREATER 大于
    NO_OP 排除所有
    Comparator Description
    BinaryComparator 使用Bytes.compareTo()比较
    BinaryPrefixComparator 和BinaryComparator差不多,从前面开始比较
    NullComparator Does not compare against an actual value but whether a given one is null, or not  null.
    BitComparator Performs a bitwise comparison, providing a BitwiseOp class with OR, and XORoperators.
    RegexStringComparator 正则表达式
    SubstringComparator 把数据当成字符串,用contains()来判断
    1. import java.io.IOException;
    2. import org.apache.hadoop.conf.Configuration;
    3. import org.apache.hadoop.hbase.HBaseConfiguration;
    4. import org.apache.hadoop.hbase.HColumnDescriptor;
    5. import org.apache.hadoop.hbase.HTableDescriptor;
    6. import org.apache.hadoop.hbase.client.HBaseAdmin;
    7. import org.apache.hadoop.hbase.client.HTable;
    8. import org.apache.hadoop.hbase.client.Put;
    9. import org.apache.hadoop.hbase.client.Result;
    10. import org.apache.hadoop.hbase.client.ResultScanner;
    11. import org.apache.hadoop.hbase.client.Scan;
    12. import org.apache.hadoop.hbase.filter.BinaryComparator;
    13. import org.apache.hadoop.hbase.filter.BinaryPrefixComparator;
    14. import org.apache.hadoop.hbase.filter.CompareFilter;
    15. import org.apache.hadoop.hbase.filter.Filter;
    16. import org.apache.hadoop.hbase.filter.RegexStringComparator;
    17. import org.apache.hadoop.hbase.filter.RowFilter;
    18. import org.apache.hadoop.hbase.filter.SubstringComparator;
    19. public class TestHbaseRowFilter {
    20.         String tableName = "test_row_filter";
    21.         Configuration config = HBaseConfiguration.create();
    22.         /**
    23.          * 部分代码来自hbase权威指南
    24.          * @throws IOException
    25.          */
    26.         public void testRowFilter() throws IOException {
    27.                 HTable table = new HTable(config, tableName);
    28.                 Scan scan = new Scan();
    29.                 System.out.println("小于等于row010的行");
    30.                 Filter filter1 = new RowFilter(CompareFilter.CompareOp.LESS_OR_EQUAL,
    31.                                 new BinaryComparator("row010".getBytes()));
    32.                 scan.setFilter(filter1);
    33.                 ResultScanner scanner1 = table.getScanner(scan);
    34.                 for (Result res : scanner1) {
    35.                         System.out.println(res);
    36.                 }
    37.                 scanner1.close();
    38.                 System.out.println("正则获取结尾为5的行");
    39.                 Filter filter2 = new RowFilter(CompareFilter.CompareOp.EQUAL,
    40.                                 new RegexStringComparator(".*5[        DISCUZ_CODE_0        ]quot;));
    41.                 scan.setFilter(filter2);
    42.                 ResultScanner scanner2 = table.getScanner(scan);
    43.                 for (Result res : scanner2) {
    44.                         System.out.println(res);
    45.                 }
    46.                 scanner2.close();
    47.                 System.out.println("包含有5的行");
    48.                 Filter filter3 = new RowFilter(CompareFilter.CompareOp.EQUAL,
    49.                                 new SubstringComparator("5"));
    50.                 scan.setFilter(filter3);
    51.                 ResultScanner scanner3 = table.getScanner(scan);
    52.                 for (Result res : scanner3) {
    53.                         System.out.println(res);
    54.                 }
    55.                 scanner3.close();
    56.                 System.out.println("开头是row01的");
    57.                 Filter filter4 = new RowFilter(CompareFilter.CompareOp.EQUAL,
    58.                                 new BinaryPrefixComparator("row01".getBytes()));
    59.                 scan.setFilter(filter4);
    60.                 ResultScanner scanner4 = table.getScanner(scan);
    61.                 for (Result res : scanner4) {
    62.                         System.out.println(res);
    63.                 }
    64.                 scanner3.close();
    65.         }
    66.         /**
    67.          * 初始化数据
    68.          */
    69.         public void init() {
    70.                 // 创建表和初始化数据
    71.                 try {
    72.                         HBaseAdmin admin = new HBaseAdmin(config);
    73.                         if (!admin.tableExists(tableName)) {
    74.                                 HTableDescriptor htd = new HTableDescriptor(tableName);
    75.                                 HColumnDescriptor hcd1 = new HColumnDescriptor("data");
    76.                                 htd.addFamily(hcd1);
    77.                                 HColumnDescriptor hcd2 = new HColumnDescriptor("url");
    78.                                 htd.addFamily(hcd2);
    79.                                 admin.createTable(htd);
    80.                         }
    81.                         HTable table = new HTable(config, tableName);
    82.                         table.setAutoFlush(false);
    83.                         int count = 50;
    84.                         for (int i = 1; i <= count; ++i) {
    85.                                 Put p = new Put(String.format("row%03d", i).getBytes());
    86.                                 p.add("data".getBytes(), String.format("col%01d", i % 10)
    87.                                                 .getBytes(), String.format("data%03d", i).getBytes());
    88.                                 p.add("url".getBytes(), String.format("col%01d", i % 10)
    89.                                                 .getBytes(), String.format("url%03d", i).getBytes());
    90.                                 table.put(p);
    91.                         }
    92.                         table.close();
    93.                 } catch (IOException e) {
    94.                         e.printStackTrace();
    95.                 }
    96.         }
    97.         /**
    98.          * @param args
    99.          * @throws IOException
    100.          */
    101.         public static void main(String[] args) throws IOException {
    102.                 TestHbaseRowFilter test = new TestHbaseRowFilter();
    103.                 test.init();
    104.                 test.testRowFilter();
    105.         }
    106. }
    复制代码
    输出结果
    1. 小于等于row010的行
    2. keyvalues={row001/data:col1/1364133382268/Put/vlen=7, row001/url:col1/1364133382268/Put/vlen=6}
    3. keyvalues={row002/data:col2/1364133382268/Put/vlen=7, row002/url:col2/1364133382268/Put/vlen=6}
    4. keyvalues={row003/data:col3/1364133382268/Put/vlen=7, row003/url:col3/1364133382268/Put/vlen=6}
    5. keyvalues={row004/data:col4/1364133382268/Put/vlen=7, row004/url:col4/1364133382268/Put/vlen=6}
    6. keyvalues={row005/data:col5/1364133382268/Put/vlen=7, row005/url:col5/1364133382268/Put/vlen=6}
    7. keyvalues={row006/data:col6/1364133382268/Put/vlen=7, row006/url:col6/1364133382268/Put/vlen=6}
    8. keyvalues={row007/data:col7/1364133382268/Put/vlen=7, row007/url:col7/1364133382268/Put/vlen=6}
    9. keyvalues={row008/data:col8/1364133382268/Put/vlen=7, row008/url:col8/1364133382268/Put/vlen=6}
    10. keyvalues={row009/data:col9/1364133382268/Put/vlen=7, row009/url:col9/1364133382268/Put/vlen=6}
    11. keyvalues={row010/data:col0/1364133382268/Put/vlen=7, row010/url:col0/1364133382268/Put/vlen=6}
    12. 正则获取结尾为5的行
    13. keyvalues={row005/data:col5/1364133382268/Put/vlen=7, row005/url:col5/1364133382268/Put/vlen=6}
    14. keyvalues={row015/data:col5/1364133382268/Put/vlen=7, row015/url:col5/1364133382268/Put/vlen=6}
    15. keyvalues={row025/data:col5/1364133382268/Put/vlen=7, row025/url:col5/1364133382268/Put/vlen=6}
    16. keyvalues={row035/data:col5/1364133382268/Put/vlen=7, row035/url:col5/1364133382268/Put/vlen=6}
    17. keyvalues={row045/data:col5/1364133382268/Put/vlen=7, row045/url:col5/1364133382268/Put/vlen=6}
    18. 包行有5的行
    19. keyvalues={row005/data:col5/1364133382268/Put/vlen=7, row005/url:col5/1364133382268/Put/vlen=6}
    20. keyvalues={row015/data:col5/1364133382268/Put/vlen=7, row015/url:col5/1364133382268/Put/vlen=6}
    21. keyvalues={row025/data:col5/1364133382268/Put/vlen=7, row025/url:col5/1364133382268/Put/vlen=6}
    22. keyvalues={row035/data:col5/1364133382268/Put/vlen=7, row035/url:col5/1364133382268/Put/vlen=6}
    23. keyvalues={row045/data:col5/1364133382268/Put/vlen=7, row045/url:col5/1364133382268/Put/vlen=6}
    24. keyvalues={row050/data:col0/1364133382268/Put/vlen=7, row050/url:col0/1364133382268/Put/vlen=6}
    25. 开头是row01的
    26. keyvalues={row010/data:col0/1364133382268/Put/vlen=7, row010/url:col0/1364133382268/Put/vlen=6}
    27. keyvalues={row011/data:col1/1364133382268/Put/vlen=7, row011/url:col1/1364133382268/Put/vlen=6}
    28. keyvalues={row012/data:col2/1364133382268/Put/vlen=7, row012/url:col2/1364133382268/Put/vlen=6}
    29. keyvalues={row013/data:col3/1364133382268/Put/vlen=7, row013/url:col3/1364133382268/Put/vlen=6}
    30. keyvalues={row014/data:col4/1364133382268/Put/vlen=7, row014/url:col4/1364133382268/Put/vlen=6}
    31. keyvalues={row015/data:col5/1364133382268/Put/vlen=7, row015/url:col5/1364133382268/Put/vlen=6}
    32. keyvalues={row016/data:col6/1364133382268/Put/vlen=7, row016/url:col6/1364133382268/Put/vlen=6}
    33. keyvalues={row017/data:col7/1364133382268/Put/vlen=7, row017/url:col7/1364133382268/Put/vlen=6}
    34. keyvalues={row018/data:col8/1364133382268/Put/vlen=7, row018/url:col8/1364133382268/Put/vlen=6}
    35. keyvalues={row019/data:col9/1364133382268/Put/vlen=7, row019/url:col9/1364133382268/Put/vlen=6}
    复制代码

     

    RowFilter用于过滤row key
    Operator Description
    LESS 小于
    LESS_OR_EQUAL 小于等于
    [EQUAL 等于
    NOT_EQUAL 不等于
    GREATER_OR_EQUAL 大于等于
    GREATER 大于
    NO_OP 排除所有

     

    Comparator Description
    BinaryComparator 使用Bytes.compareTo()比较
    BinaryPrefixComparator 和BinaryComparator差不多,从前面开始比较
    NullComparator Does not compare against an actual value but whether a given one is null, or not  null.
    BitComparator Performs a bitwise comparison, providing a BitwiseOp class with OR, and XORoperators.
    RegexStringComparator 正则表达式
    SubstringComparator 把数据当成字符串,用contains()来判断


    1. import java.io.IOException;
    2. import org.apache.hadoop.conf.Configuration;
    3. import org.apache.hadoop.hbase.HBaseConfiguration;
    4. import org.apache.hadoop.hbase.HColumnDescriptor;
    5. import org.apache.hadoop.hbase.HTableDescriptor;
    6. import org.apache.hadoop.hbase.client.HBaseAdmin;
    7. import org.apache.hadoop.hbase.client.HTable;
    8. import org.apache.hadoop.hbase.client.Put;
    9. import org.apache.hadoop.hbase.client.Result;
    10. import org.apache.hadoop.hbase.client.ResultScanner;
    11. import org.apache.hadoop.hbase.client.Scan;
    12. import org.apache.hadoop.hbase.filter.BinaryComparator;
    13. import org.apache.hadoop.hbase.filter.BinaryPrefixComparator;
    14. import org.apache.hadoop.hbase.filter.CompareFilter;
    15. import org.apache.hadoop.hbase.filter.Filter;
    16. import org.apache.hadoop.hbase.filter.RegexStringComparator;
    17. import org.apache.hadoop.hbase.filter.RowFilter;
    18. import org.apache.hadoop.hbase.filter.SubstringComparator;
    19. public class TestHbaseRowFilter {
    20.         String tableName = "test_row_filter";
    21.         Configuration config = HBaseConfiguration.create();
    22.         /**
    23.          * 部分代码来自hbase权威指南
    24.          * @throws IOException
    25.          */
    26.         public void testRowFilter() throws IOException {
    27.                 HTable table = new HTable(config, tableName);
    28.                 Scan scan = new Scan();
    29.                 System.out.println("小于等于row010的行");
    30.                 Filter filter1 = new RowFilter(CompareFilter.CompareOp.LESS_OR_EQUAL,
    31.                                 new BinaryComparator("row010".getBytes()));
    32.                 scan.setFilter(filter1);
    33.                 ResultScanner scanner1 = table.getScanner(scan);
    34.                 for (Result res : scanner1) {
    35.                         System.out.println(res);
    36.                 }
    37.                 scanner1.close();
    38.                 System.out.println("正则获取结尾为5的行");
    39.                 Filter filter2 = new RowFilter(CompareFilter.CompareOp.EQUAL,
    40.                                 new RegexStringComparator(".*5[        DISCUZ_CODE_0        ]quot;));
    41.                 scan.setFilter(filter2);
    42.                 ResultScanner scanner2 = table.getScanner(scan);
    43.                 for (Result res : scanner2) {
    44.                         System.out.println(res);
    45.                 }
    46.                 scanner2.close();
    47.                 System.out.println("包含有5的行");
    48.                 Filter filter3 = new RowFilter(CompareFilter.CompareOp.EQUAL,
    49.                                 new SubstringComparator("5"));
    50.                 scan.setFilter(filter3);
    51.                 ResultScanner scanner3 = table.getScanner(scan);
    52.                 for (Result res : scanner3) {
    53.                         System.out.println(res);
    54.                 }
    55.                 scanner3.close();
    56.                 System.out.println("开头是row01的");
    57.                 Filter filter4 = new RowFilter(CompareFilter.CompareOp.EQUAL,
    58.                                 new BinaryPrefixComparator("row01".getBytes()));
    59.                 scan.setFilter(filter4);
    60.                 ResultScanner scanner4 = table.getScanner(scan);
    61.                 for (Result res : scanner4) {
    62.                         System.out.println(res);
    63.                 }
    64.                 scanner3.close();
    65.         }
    66.         /**
    67.          * 初始化数据
    68.          */
    69.         public void init() {
    70.                 // 创建表和初始化数据
    71.                 try {
    72.                         HBaseAdmin admin = new HBaseAdmin(config);
    73.                         if (!admin.tableExists(tableName)) {
    74.                                 HTableDescriptor htd = new HTableDescriptor(tableName);
    75.                                 HColumnDescriptor hcd1 = new HColumnDescriptor("data");
    76.                                 htd.addFamily(hcd1);
    77.                                 HColumnDescriptor hcd2 = new HColumnDescriptor("url");
    78.                                 htd.addFamily(hcd2);
    79.                                 admin.createTable(htd);
    80.                         }
    81.                         HTable table = new HTable(config, tableName);
    82.                         table.setAutoFlush(false);
    83.                         int count = 50;
    84.                         for (int i = 1; i <= count; ++i) {
    85.                                 Put p = new Put(String.format("row%03d", i).getBytes());
    86.                                 p.add("data".getBytes(), String.format("col%01d", i % 10)
    87.                                                 .getBytes(), String.format("data%03d", i).getBytes());
    88.                                 p.add("url".getBytes(), String.format("col%01d", i % 10)
    89.                                                 .getBytes(), String.format("url%03d", i).getBytes());
    90.                                 table.put(p);
    91.                         }
    92.                         table.close();
    93.                 } catch (IOException e) {
    94.                         e.printStackTrace();
    95.                 }
    96.         }
    97.         /**
    98.          * @param args
    99.          * @throws IOException
    100.          */
    101.         public static void main(String[] args) throws IOException {
    102.                 TestHbaseRowFilter test = new TestHbaseRowFilter();
    103.                 test.init();
    104.                 test.testRowFilter();
    105.         }
    106. }
    复制代码
    输出结果
    1. 小于等于row010的行
    2. keyvalues={row001/data:col1/1364133382268/Put/vlen=7, row001/url:col1/1364133382268/Put/vlen=6}
    3. keyvalues={row002/data:col2/1364133382268/Put/vlen=7, row002/url:col2/1364133382268/Put/vlen=6}
    4. keyvalues={row003/data:col3/1364133382268/Put/vlen=7, row003/url:col3/1364133382268/Put/vlen=6}
    5. keyvalues={row004/data:col4/1364133382268/Put/vlen=7, row004/url:col4/1364133382268/Put/vlen=6}
    6. keyvalues={row005/data:col5/1364133382268/Put/vlen=7, row005/url:col5/1364133382268/Put/vlen=6}
    7. keyvalues={row006/data:col6/1364133382268/Put/vlen=7, row006/url:col6/1364133382268/Put/vlen=6}
    8. keyvalues={row007/data:col7/1364133382268/Put/vlen=7, row007/url:col7/1364133382268/Put/vlen=6}
    9. keyvalues={row008/data:col8/1364133382268/Put/vlen=7, row008/url:col8/1364133382268/Put/vlen=6}
    10. keyvalues={row009/data:col9/1364133382268/Put/vlen=7, row009/url:col9/1364133382268/Put/vlen=6}
    11. keyvalues={row010/data:col0/1364133382268/Put/vlen=7, row010/url:col0/1364133382268/Put/vlen=6}
    12. 正则获取结尾为5的行
    13. keyvalues={row005/data:col5/1364133382268/Put/vlen=7, row005/url:col5/1364133382268/Put/vlen=6}
    14. keyvalues={row015/data:col5/1364133382268/Put/vlen=7, row015/url:col5/1364133382268/Put/vlen=6}
    15. keyvalues={row025/data:col5/1364133382268/Put/vlen=7, row025/url:col5/1364133382268/Put/vlen=6}
    16. keyvalues={row035/data:col5/1364133382268/Put/vlen=7, row035/url:col5/1364133382268/Put/vlen=6}
    17. keyvalues={row045/data:col5/1364133382268/Put/vlen=7, row045/url:col5/1364133382268/Put/vlen=6}
    18. 包行有5的行
    19. keyvalues={row005/data:col5/1364133382268/Put/vlen=7, row005/url:col5/1364133382268/Put/vlen=6}
    20. keyvalues={row015/data:col5/1364133382268/Put/vlen=7, row015/url:col5/1364133382268/Put/vlen=6}
    21. keyvalues={row025/data:col5/1364133382268/Put/vlen=7, row025/url:col5/1364133382268/Put/vlen=6}
    22. keyvalues={row035/data:col5/1364133382268/Put/vlen=7, row035/url:col5/1364133382268/Put/vlen=6}
    23. keyvalues={row045/data:col5/1364133382268/Put/vlen=7, row045/url:col5/1364133382268/Put/vlen=6}
    24. keyvalues={row050/data:col0/1364133382268/Put/vlen=7, row050/url:col0/1364133382268/Put/vlen=6}
    25. 开头是row01的
    26. keyvalues={row010/data:col0/1364133382268/Put/vlen=7, row010/url:col0/1364133382268/Put/vlen=6}
    27. keyvalues={row011/data:col1/1364133382268/Put/vlen=7, row011/url:col1/1364133382268/Put/vlen=6}
    28. keyvalues={row012/data:col2/1364133382268/Put/vlen=7, row012/url:col2/1364133382268/Put/vlen=6}
    29. keyvalues={row013/data:col3/1364133382268/Put/vlen=7, row013/url:col3/1364133382268/Put/vlen=6}
    30. keyvalues={row014/data:col4/1364133382268/Put/vlen=7, row014/url:col4/1364133382268/Put/vlen=6}
    31. keyvalues={row015/data:col5/1364133382268/Put/vlen=7, row015/url:col5/1364133382268/Put/vlen=6}
    32. keyvalues={row016/data:col6/1364133382268/Put/vlen=7, row016/url:col6/1364133382268/Put/vlen=6}
    33. keyvalues={row017/data:col7/1364133382268/Put/vlen=7, row017/url:col7/1364133382268/Put/vlen=6}
    34. keyvalues={row018/data:col8/1364133382268/Put/vlen=7, row018/url:col8/1364133382268/Put/vlen=6}
    35. keyvalues={row019/data:col9/1364133382268/Put/vlen=7, row019/url:col9/1364133382268/Put/vlen=6}
    复制代码
  • 相关阅读:
    重要的API运算函数
    Chicken的代码解剖 :4 ChickenPawn_Chicken一小部分
    Chicken的代码解剖:5 Chicken中的两个接口及其相关
    项目实例:深投控股star rating评分插件
    项目实例:深投控股JQueryXmlMenu
    编程经验:VS2008注册方法
    编程经验:SQL Server Management Studio使用注意事项
    程序员面试题精选100题(07)翻转句子中单词的顺序
    程序员面试100题精选(8)
    Ogre框架的搭建过程
  • 原文地址:https://www.cnblogs.com/seaspring/p/5631933.html
Copyright © 2011-2022 走看看