利用Filter进行筛选:HBase的Scan可以通过setFilter方法添加过滤器(Filter),这也是分页、多条件查询的基础。HBase为筛选数据提供了一组过滤器,通过这个过滤器可以在HBase中的数据的多个维度(行,列,数据版本)上进行对数据的筛选操作。Filter是可以加多个的,HBase提供十多种Filter类型。filterList.addFilter(scvf) 就是可以添加多个查询条件,然后调用setFilter函数给Scanner。

直接附上源码:(多条件查询之后对该2行键一行数据删除)

package cn.edu.zucc.hbase;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.Cell;
import org.apache.hadoop.hbase.CellUtil;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import java.io.IOException;
import org.apache.hadoop.hbase.KeyValue;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List; import org.apache.hadoop.hbase.filter.CompareFilter.CompareOp;
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.util.Bytes;
public class test {
public static Configuration configuration;
public static Connection connection;
public static Admin admin;
public static void QueryByCondition3(String tableName) { try {
init();
Table table = connection.getTable(TableName.valueOf(tableName)); List<Filter> filters = new ArrayList<Filter>(); Filter filter1 = new SingleColumnValueFilter(Bytes.toBytes("Name"), null, CompareOp.EQUAL,
Bytes.toBytes("lddddd"));
filters.add(filter1); Filter filter2 = new SingleColumnValueFilter(Bytes.toBytes("Score"), null, CompareOp.EQUAL,
Bytes.toBytes("90"));
filters.add(filter2); /* Filter filter3 = new SingleColumnValueFilter(Bytes.toBytes("column3"), null, CompareOp.EQUAL,
Bytes.toBytes("ccc"));
filters.add(filter3);*/ FilterList filterList1 = new FilterList(filters); Scan scan = new Scan();
scan.setFilter(filterList1);
ResultScanner rs = table.getScanner(scan);
System.out.println(rs);
String delrow="";
for (Result r : rs) {
System.out.println("获得到rowkey:" + new String(r.getRow()));
delrow=new String(r.getRow());
for (KeyValue keyValue : r.raw()) {
System.out.println(
"列:" + new String(keyValue.getFamily())+new String(keyValue.getQualifier()) + "====值:" + new String(keyValue.getValue()));
}
}
Delete delete = new Delete(delrow.getBytes());
//删除指定列族
//delete.addFamily(Bytes.toBytes(colFamily));
//删除指定列
//delete.addColumn(Bytes.toBytes(colFamily),Bytes.toBytes(col));
table.delete(delete);
System.out.println("删除成功!");
table.close();
close();
rs.close(); } catch (Exception e) {
e.printStackTrace();
} } public static void init() {
configuration = HBaseConfiguration.create();
configuration.set("hbase.rootdir", "hdfs://localhost:9000/hbase");
try {
connection = ConnectionFactory.createConnection(configuration);
admin = connection.getAdmin();
} catch (IOException e) {
e.printStackTrace();
}
} public static void close() {
try {
if (admin != null) {
admin.close();
}
if (null != connection) {
connection.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
try {
QueryByCondition3("person");
System.out.println("over111");
} catch (Exception e) {
e.printStackTrace();
} }
}

结果:

最新文章

  1. c++模板函数实例化的偏序机制
  2. TripleDES加解密Java、C#、php通用代码
  3. CoCreateInstance调用COM接口伪流程
  4. JDBC学习笔记(1)
  5. SSH框架优缺点
  6. plsql配置连接远程数据库
  7. 文件控制列表命令setfacl和getfacl的使用
  8. C++虚基类详解(转)
  9. C++与AS3
  10. ccMacros
  11. java对象引用传递和值传递的一些总结
  12. Activity 的 4 种加载模式
  13. javascript系列1--把字符串当代码来执行
  14. SVN Error:Error performing cleanup for
  15. asp+SqlServer2008开发【第一集:安装SqlServer2008以及登陆】
  16. ASP.NET Core 2 学习笔记(九)模型绑定
  17. lch 儿童围棋课堂 启蒙篇 (李昌镐 著)
  18. 兼容安卓和ios实现一键复制内容到剪切板
  19. 关于js的 for...in 你了解多少
  20. 在Web Page中包含PHP代码

热门文章

  1. 有缓存区的管道channel
  2. 小白专场-堆中的路径-python语言实现
  3. 移动端js触摸touch详解(附带案例源码)
  4. Visual Studio 2019 (VS2019)正式版安装 VisualSVN Server 插件
  5. FilterRegistrationBean注册过滤器探究
  6. 图灵的文章“Computing machinery and intelligence”译文
  7. VMware+windbg时快照功能的使用
  8. WPF DataGrid row background converter datagrid 行背景随绑定数据变化,转换器
  9. GALAXY OJ NOIP2019联合测试1-总结
  10. C#中将long浮点数格式化为{H:min:s.ms}格式的字符串的方法