您当前的位置: 首页 >  hbase

宝哥大数据

暂无认证

  • 1浏览

    0关注

    1029博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

hbase的ValueFilter对列值(Double)过滤

宝哥大数据 发布时间:2021-05-11 21:49:32 ,浏览量:1

1.1、插入测试数据

插入两条Double类型数据


  def put(): Unit = {
    val hbaseConf = HBaseConfiguration.create()
    val hbaseConn = ConnectionFactory.createConnection(hbaseConf)


    val table = hbaseConn.getTable(TableName.valueOf("test"))

    val put = new Put(Bytes.toBytes("h004_001"))
    put.addColumn(Bytes.toBytes("p"), Bytes.toBytes("am"), Bytes.toBytes(2000d))

    val put2 = new Put(Bytes.toBytes("h004_002"))
    val d: Double = 2000d
    put2.addColumn(Bytes.toBytes("p"), Bytes.toBytes("am"), Bytes.toBytes(5000d))

    table.put(put)
    table.put(put2)

    table.close()
  }
1.2、查询 (ValueFilter) 1.2.1、大于100的数据
  def get(): Unit = {
    val hbaseConf = HBaseConfiguration.create()
    val hbaseConn = ConnectionFactory.createConnection(hbaseConf)


    val table = hbaseConn.getTable(TableName.valueOf("test"))
    val scan = new Scan
    val hotelId = "h004"
    val limit = 100d // 此处必须和存储数据类型保持一致,否则报错
    scan.setStartRow(Bytes.toBytes(hotelId + "_"))
    scan.setStopRow(Bytes.toBytes(hotelId + "_~"))
    scan.addColumn(Bytes.toBytes("p"), Bytes.toBytes("am"))
    scan.setFilter(new ValueFilter(CompareFilter.CompareOp.GREATER, new BinaryComparator(Bytes.toBytes(limit))))


    val scanner: ResultScanner = table.getScanner(scan)

    val iterator: util.Iterator[Result] = scanner.iterator
    while (iterator.hasNext) {
      val rs: Result = iterator.next
      val rowkey: String = Bytes.toString(rs.getRow)
      val cell: Cell = rs.getColumnLatestCell(Bytes.toBytes("p"), Bytes.toBytes("am"))

      println(Bytes.toDouble(cell.getValueArray, cell.getValueOffset))

      println( rowkey)
    }


    table.close()
  }

返回两条数据 在这里插入图片描述

二、当插入的是BigDecimal数据时,数据查询错误 2.1、插入BigDecimal数据

在这里插入图片描述

2.2、查询数据 2.2.1、查询大于10的数据

在这里插入图片描述

但是返回结果只有5000的那条数据,2000的没有返回 在这里插入图片描述

关注
打赏
1587549273
查看更多评论
立即登录/注册

微信扫码登录

0.0402s