博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
spark实现从hbase中批量查询多个rowKey
阅读量:7005 次
发布时间:2019-06-27

本文共 1336 字,大约阅读时间需要 4 分钟。

需求:参数是多个没有顺序的rowKey,在某张表中批量查询。一个一个rowKey查询的话,效率太低。

实现:需要在scan中添加filter。filter中添加多个rowKey,对需要查询的rowKey进行限制。x代表rowKey。

val rowKeyFilter=new RowFilter(CompareFilter.CompareOp.EQUAL,new BinaryComparator(Bytes.toBytes(x)))

  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 XOR operators.
RegexStringComparator 正则表达式
SubstringComparator 把数据当成字符串,用contains()来判断

在这里使用EQUAL,BinaryComparator。

多个rowKey,rowKeyList是个rowKey的集合

//存放rowKeyFilter的filter var filters = new util.ArrayList[Filter] rowKeyList.foreach(x=>{
val rowKeyFilter=new RowFilter(CompareFilter.CompareOp.EQUAL,new BinaryComparator(Bytes.toBytes(x)))      filters.add(rowKeyFilter)    })

  然后将filters添加到 FilterList中

val filterList: FilterList = new FilterList(FilterList.Operator.MUST_PASS_ONE,filters)     scan.setFilter(filterList)
FilterList.Operator.MUST_PASS_ALL --> 取交集 相当一and操作    FilterList.Operator.MUST_PASS_ONE --> 取并集 相当于or 操作

 

 

转载于:https://www.cnblogs.com/xuesheng/p/9633751.html

你可能感兴趣的文章
CSS3实现背景颜色渐变 摘抄
查看>>
CentOS 6.8 安装vnc
查看>>
阿里云提供的一个监测cpu和内存的shell脚本(get_cpu_mem_info.sh)
查看>>
怎么让input不失去焦点
查看>>
jsp中getParameter与getAttribute的区别
查看>>
【ME - Mail】之Apache Commons Email
查看>>
应用组件
查看>>
angular2 学习二 {{model}} - 文本插值
查看>>
Android postDelay+Dialog引起的窗体泄露
查看>>
PHP 初试多线程pthreads扩展
查看>>
centos7 virtualbox 设置静态ip
查看>>
2.3 Shared Libraries
查看>>
Mac修改MySQL编码
查看>>
sed命令替换换行符
查看>>
[译]C语言实现一个简易的Hash table(4)
查看>>
Xinetd超级服务经典功能汇总
查看>>
等额本金、等额本息工具类(Java版)
查看>>
Data Grip 激活码
查看>>
终于知道网页上一些黑白色的小图标是哪里来的了
查看>>
python(十一)异常
查看>>