当前位置:Gxlcms > mysql > HbaseQualifierFilter

HbaseQualifierFilter

时间:2021-07-01 10:21:17 帮助过:57人阅读

Hbase QualifierFilter用于过滤qualifier,也就是一个列族里面data:xxx,冒号后面的字符串。 =。= package com.fatkun.filter.comparison;import java.io.IOException;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.hbase.HBaseCon

Hbase QualifierFilter用于过滤qualifier,也就是一个列族里面data:xxx,冒号后面的字符串。 =。=

  1. package com.fatkun.filter.comparison;
  2. import java.io.IOException;
  3. import org.apache.hadoop.conf.Configuration;
  4. import org.apache.hadoop.hbase.HBaseConfiguration;
  5. import org.apache.hadoop.hbase.HColumnDescriptor;
  6. import org.apache.hadoop.hbase.HTableDescriptor;
  7. import org.apache.hadoop.hbase.client.Get;
  8. import org.apache.hadoop.hbase.client.HBaseAdmin;
  9. import org.apache.hadoop.hbase.client.HTable;
  10. import org.apache.hadoop.hbase.client.Put;
  11. import org.apache.hadoop.hbase.client.Result;
  12. import org.apache.hadoop.hbase.client.ResultScanner;
  13. import org.apache.hadoop.hbase.client.Scan;
  14. import org.apache.hadoop.hbase.filter.BinaryComparator;
  15. import org.apache.hadoop.hbase.filter.CompareFilter;
  16. import org.apache.hadoop.hbase.filter.FamilyFilter;
  17. import org.apache.hadoop.hbase.filter.Filter;
  18. import org.apache.hadoop.hbase.filter.QualifierFilter;
  19. import org.apache.hadoop.hbase.util.Bytes;
  20. public class TestHbaseQualifierFilter {
  21. String tableName = "test_qualifier_filter";
  22. Configuration config = HBaseConfiguration.create();
  23. /**
  24. * 部分代码来自hbase权威指南
  25. * @throws IOException
  26. */
  27. public void testRowFilter() throws IOException {
  28. HTable table = new HTable(config, tableName);
  29. Scan scan = new Scan();
  30. System.out.println("只列出小于col5的列");
  31. Filter filter1 = new QualifierFilter(CompareFilter.CompareOp.LESS,
  32. new BinaryComparator(Bytes.toBytes("col5")));
  33. scan.setFilter(filter1);
  34. ResultScanner scanner1 = table.getScanner(scan);
  35. for (Result res : scanner1) {
  36. System.out.println(res);
  37. }
  38. scanner1.close();
  39. System.out.println("get也可以设置filter");
  40. Get get1 = new Get(Bytes.toBytes("row003"));
  41. get1.setFilter(filter1);
  42. Result result1 = table.get(get1);
  43. System.out.println("Result of get(): " + result1);
  44. }
  45. /**
  46. * 初始化数据
  47. */
  48. public void init() {
  49. // 创建表和初始化数据
  50. try {
  51. HBaseAdmin admin = new HBaseAdmin(config);
  52. if (!admin.tableExists(tableName)) {
  53. HTableDescriptor htd = new HTableDescriptor(tableName);
  54. HColumnDescriptor hcd1 = new HColumnDescriptor("data1");
  55. htd.addFamily(hcd1);
  56. HColumnDescriptor hcd2 = new HColumnDescriptor("data2");
  57. htd.addFamily(hcd2);
  58. HColumnDescriptor hcd3 = new HColumnDescriptor("data3");
  59. htd.addFamily(hcd3);
  60. admin.createTable(htd);
  61. }
  62. HTable table = new HTable(config, tableName);
  63. table.setAutoFlush(false);
  64. int count = 50;
  65. for (int i = 1; i <= count; ++i) {
  66. Put p = new Put(String.format("row%03d", i).getBytes());
  67. p.add("data1".getBytes(), String.format("col%01d", i % 10)
  68. .getBytes(), String.format("data1%03d", i).getBytes());
  69. p.add("data2".getBytes(), String.format("col%01d", i % 10)
  70. .getBytes(), String.format("data2%03d", i).getBytes());
  71. p.add("data3".getBytes(), String.format("col%01d", i % 10)
  72. .getBytes(), String.format("data3%03d", i).getBytes());
  73. table.put(p);
  74. }
  75. table.close();
  76. } catch (IOException e) {
  77. e.printStackTrace();
  78. }
  79. }
  80. /**
  81. * @param args
  82. * @throws IOException
  83. */
  84. public static void main(String[] args) throws IOException {
  85. TestHbaseQualifierFilter test = new TestHbaseQualifierFilter();
  86. test.init();
  87. test.testRowFilter();
  88. }
  89. }

人气教程排行