`
liujiekasini0312
  • 浏览: 147176 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

hbase分页和按条件筛选

 
阅读更多

关于hbse我想大家都比较常用,这个博客只是当做一个备份。

调用接口:int count = utils.HBaseScan("PUBLIC_SENTIMENT_INFO", "taxesInfo", today);

hbase帮助类:

package com.boc.sql.utils;


import java.io.IOException;
import java.util.ArrayList;
import java.util.List;


import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.Cell;
import org.apache.hadoop.hbase.CellUtil;
import org.apache.hadoop.hbase.KeyValue;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.ResultScanner;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.filter.BinaryComparator;
import org.apache.hadoop.hbase.filter.BinaryPrefixComparator;
import org.apache.hadoop.hbase.filter.CompareFilter.CompareOp;
import org.apache.hadoop.hbase.filter.FamilyFilter;
import org.apache.hadoop.hbase.filter.FilterList;
import org.apache.hadoop.hbase.filter.SingleColumnValueFilter;
import org.apache.hadoop.hbase.util.Bytes;


/**
* hbase操作类
*
* @author 作者:刘杰
*
* @version 创建时间:2016年11月23日 下午2:04:21
*/


public class HBaseUtil {


private static Configuration conf = null;
static {
conf = HTableUtil.getConf();
}
private HTable table = null;


/**
* 插入一行数据到HBase,返回true表示插入成功,返回false表示插入失败
*
* @param tableName
* @param rowkey
* @param columnFamily
* @param column
* @param value
* @return
*/


@SuppressWarnings({ "deprecation", "resource" })
public static boolean insertOneRow(String tableName, String rowkey, String columnFamily, String column,
String value) {


try {
HTable table = new HTable(conf, tableName);
List<Put> lput = new ArrayList<Put>();
Put put = new Put(Bytes.toBytes(rowkey));
put.add(Bytes.toBytes(columnFamily), Bytes.toBytes(column), Bytes.toBytes(value));
lput.add(put);
table.put(lput);// 放入表
return true;
} catch (IOException e) {
e.printStackTrace();
return false;
}


}


/**
* 对HBase表的批量插入
*
* @param tableName
* 表名
*/
@SuppressWarnings("deprecation")
public void batchSave(String tableName, List<Put> listPut) throws IOException {
HTable table = null;
table = new HTable(conf, tableName);
table.setAutoFlush(false);
table.put(listPut);
table.isAutoFlush();
table.close();
}


/**
* 查询全部
*
* @param hTable
* @param startRow
* @param endRow
* @throws IOException
*/
public static void scanRecord(String tableName, String family, List<String> list) throws IOException {
HTable hTable = new HTable(conf, tableName);
Scan scan = new Scan();
if (null != list && list.size() > 0) {
for (String string : list) {
scan.addColumn(family.getBytes(), string.getBytes());
}
}
// scan.addColumn(Bytes.toBytes("cf"),Bytes.toBytes("name"));
ResultScanner scanner = hTable.getScanner(scan);
int i = 0;
for (Result result : scanner) {
i += 1;
System.out.println("rowKey:" + new String(result.getRow()));
for (Cell cell : result.rawCells()) {
System.out.println("列族:" + new String(CellUtil.cloneFamily(cell)) + " 列:"
+ new String(CellUtil.cloneQualifier(cell)) + " 值:" + new String(CellUtil.cloneValue(cell)));
}
}
System.out.println(i);
}


/**
* 扫描HBase表 当sartRow和endRow为空的时候,全表扫描
*
* @param tableName
* 表名
* @param startRow
* 开始rowkey
* @param endRow
* 结束rowkey
* @return
* @throws IOException
*/


@SuppressWarnings("deprecation")
public int HBaseScan(String tableName, String family, String today) {
if (!family.equals("noticeInfo")) {
return 0;
}
ResultScanner scanner = null;
// this.table = new HTable(conf, tableName);
Scan scan = new Scan();
HTable hTable = null;
try {
hTable = new HTable(conf, tableName);
} catch (IOException e1) {
e1.printStackTrace();
}
FilterList list = new FilterList(FilterList.Operator.MUST_PASS_ALL);
FamilyFilter filter = new FamilyFilter(CompareOp.EQUAL, new BinaryComparator(Bytes.toBytes(family)));


BinaryPrefixComparator comp = new BinaryPrefixComparator(Bytes.toBytes(today));
SingleColumnValueFilter s_filter = new SingleColumnValueFilter(Bytes.toBytes(family), Bytes.toBytes("get_time"),
CompareOp.EQUAL, comp);
list.addFilter(filter);
list.addFilter(s_filter);
int num = 0;
scan.setFilter(list);
try {
scanner = hTable.getScanner(scan);
} catch (IOException e) {
System.out.println("hbase获得结果集出错,直接返回");
e.printStackTrace();
return 0;
}
for (Result r : scanner) {
int hive = 0;
for (KeyValue keyValue : r.raw()) {
if (new String(keyValue.getQualifier()).equals("get_time")) {
hive = 1;
System.out.println(new String(keyValue.getQualifier()) + " ## " + new String(keyValue.getValue()));
}
}
if (hive == 1) {
System.out.println("行:" + num);
num++;
}
}
try {
hTable.close();
} catch (IOException e) {
e.printStackTrace();
}
return num;
}


public static void main(String[] args) {


}
}

分享到:
评论

相关推荐

    hbase分页查询实现.pdf

    HBase分页查询实现 HBase作为一个NoSQL数据库,具有高性能、高可扩展性和高可靠性等特点,但是在查询方面却存在一些限制,例如不支持分页查询。这就使得开发者需要自己实现分页查询功能。本文将讲解如何使用Java...

    hbase分页查询实现[归类].pdf

    HBase分页查询实现 HBase是一种基于分布式的NoSQL数据库,它提供了高效的数据存储和检索能力。然而,HBase本身不支持分页查询,这使得开发者需要自己实现分页功能。本文将讲解如何使用Java语言实现HBase的分页查询...

    hbase查询分页分页

    在实际开发中,`hbase分页代码`通常会封装成一个工具类或者服务接口,以方便在应用程序中调用。这样的代码可能包括以下部分: - 查询方法,接受当前页数和每页大小作为参数,计算StartRow和StopRow,然后执行HBase的...

    hbase java api 访问 查询、分页

    在实际应用中,可能会涉及到更复杂的查询场景,如使用Filter进行数据筛选,或者利用HBase的Region Split特性优化存储和查询性能。对于过滤器,可以创建各种类型的Filter对象,如`PrefixFilter`、`RowFilter`等,并将...

    hbase 分页功能

    总的来说,PageFilter是HBase处理大数据查询的重要工具,它为开发者提供了灵活的分页机制,但同时也需要注意其限制和优化策略。在实际项目中,根据具体需求选择合适的分页方案,是提高系统性能的关键。

    hbase-page:hbase 分页

    HBase本身并不直接支持像SQL那样的传统分页,但通过一些策略和工具,我们可以实现类似的效果。本文将深入探讨HBase中的分页实现及其相关知识点。 一、HBase的特性与数据模型 HBase是基于谷歌Bigtable设计的开源...

    java操作Hbase之Hbase专用过滤器PageFilter的使用源代码

    在Java中操作HBase数据库时,我们经常需要对大量数据进行高效的检索和处理。...提供的源代码应该包含如何创建、应用PageFilter以及处理扫描结果的完整示例,这对于学习和实践HBase的分页查询非常有帮助。

    HBase分页查询的rowkey设计技巧

    用户历史订单列表查询rowkey设计技巧 最左前缀原则

    HbaseTemplate 操作hbase

    2. **查找(find)操作**:HbaseTemplate提供了多种查找数据的方法,例如`find`方法,可以基于特定的行键或者扫描条件查询数据。这些方法允许我们灵活地定位到HBase表中的特定行或范围,返回结果可以是单个RowResult...

    基于集群的HBase安装和配置

    ### 基于集群的HBase安装和配置 #### Zookeeper简介 Zookeeper作为Hadoop生态中的关键组件,主要用于提供高可用性和分布式协调服务。它能够有效地管理Hadoop集群中的各种资源和服务,例如Hadoop NameNode管理和...

    hbase备份和数据恢复

    在大数据领域,HBase是一个基于Hadoop的分布式数据库,它为海量结构化和半结构化数据提供了高可靠性、高性能的存储方案。HBase备份和数据恢复是系统运维中至关重要的一环,确保了业务连续性和数据安全性。同时,...

    hbase原理和设计

    1. **表和列族**:HBase中的表由行和列组成,列被划分成多个列族(Column Family),每个列族又包含多个列。RowKey是表的主键,用于排序记录。 2. **Region**:随着数据量的增长,表会自动分割成多个Region。每个...

    hive和hbase整合

    这里,`STORED BY`指定了HBase的存储处理类,`WITH SERDEPROPERTIES`定义了列族和列的映射,`:key`表示HBase的行键,`cf1:val`和`cf2:val`是列族和列。`TBLPROPERTIES`指定了HBase表的名称。 然而,在执行上述创建...

    HBASE架构和原理解析

    1. **数据存储方式**:传统数据库按行存储数据,而HBase则按列族存储。这种差异使得在查询特定列族时,HBase能提供更好的I/O性能。 2. **数据更新机制**:在HBase中,修改或删除操作实际上是通过插入新数据或添加...

    HBase官方文档中文版-HBase手册中文版

    4. 表和Region:表可以被分割成多个Region,Region按行键范围分布,随着数据增长,Region会自动分裂。 四、HBase操作 1. CRUD操作:创建表、删除表、插入数据、查询数据、更新数据、删除数据。 2. 扫描器(Scanner...

    hbase入门和使用

    HBase入门和使用知识点总结: 1. HBase基本介绍: HBase是建立在Hadoop文件系统(HDFS)之上的一种开源、分布式、可扩展的非关系型数据库。它是一种列式存储系统,模仿Google的Bigtable模型,适用于海量数据的实时...

    hbase和zookeeper配置

    HBase 和 ZooKeeper 配置详解 HBase 和 ZooKeeper 是两个非常重要的分布式系统组件,分别用于分布式数据库和分布式协调服务。今天,我们将详细介绍如何配置 HBase 和 ZooKeeper,以便更好地理解它们之间的交互。 ...

    hbase用于查询客户端工具

    HBase Shell提供了创建表、删除表、插入数据、查询数据等基本操作,同时也支持复杂的条件查询和扫描。通过Shell,你可以直接执行HBase的API调用,进行调试和测试。 2. **HBase REST Gateway**:REST...

Global site tag (gtag.js) - Google Analytics