spark实现分页查询hbase

第一种:

 

 

 

  import org.apache.hadoop.hbase.io.ImmutableBytesWritable
  import org.apache.spark.{SparkConf, SparkContext}
  import org.apache.hadoop.hbase.mapreduce.TableInputFormat
  import org.apache.hadoop.hbase.protobuf.ProtobufUtil
  import org.apache.hadoop.hbase.util.{Base64, Bytes}
  import org.apache.spark.rdd.RDD
  import org.apache.hadoop.hbase.HBaseConfiguration
 import org.apache.hadoop.hbase.client.Result
 import org.apache.hadoop.hbase.client.Scan
 import org.apache.hadoop.hbase.filter._
 import org.apache.hadoop.hbase.util.Bytes    
 val sparkConf = new SparkConf().setAppName("HbaseTest").setMaster("local[1]")
     val sc = new SparkContext(sparkConf)
     val conf = HBaseConfiguration.create()
     conf.set("hbase.zookeeper.quorum",Spark_HbaseUtil.getProperties("bootstrap.servers") )
     val tableName = "sinldo:hos_index"
     conf.set(TableInputFormat.INPUT_TABLE, tableName)
     //开始rowKey和结束rowKey一样代表精确查询的某条数据
     val startRowkey = lastRowKey
    // 组装scan语句  startRowkey  stopRowkey可以写成参数
     val scan = new Scan(Bytes.toBytes(startRowkey))
     //true代表不查询全表
   scan.setCacheBlocks(true)
     scan.setCaching(9)
    val filterList: FilterList = new FilterList(FilterList.Operator.MUST_PASS_ALL);
     val filter = new PageFilter(10);
val proto = ProtobufUtil.toScan(scan)
val scanToString = Base64.encodeBytes(proto.toByteArray)
conf.set(TableInputFormat.SCAN, scanToString)
val hBaseRDD: RDD[(ImmutableBytesWritable, Result)] = sc.newAPIHadoopRDD(conf, classOf[TableInputFormat], classOf[ImmutableBytesWritable], classOf[Result])
//获取数量
val count = hBaseRDD.count()
println(count)

第二种:将第一种的设置开始RoeKey的地方换成

    import org.apache.hadoop.hbase.filter.RowFilter
    import org.apache.hadoop.hbase.filter.BinaryComparator;
     val filterList: FilterList = new FilterList(FilterList.Operator.MUST_PASS_ALL);
     val filter = new PageFilter(10)
  //002e代表开始的rowKey
    val rowFilter2: Filter = new RowFilter(CompareFilter.CompareOp.GREATER, new BinaryComparator(Bytes.toBytes("022e")));
    filterList.addFilter(filter)
    filterList.addFilter(rowFilter2)
    scan.setFilter(filterList)

 

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值