`
侯上校
  • 浏览: 223376 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

HBase实现分页核心代码

 
阅读更多
Scan scan = new Scan();
scan.setStartRow(getBytes(startRow));
scan.setStopRow(getBytes(stopRow));
scan.setCaching(1000);
scan.setCacheBlocks(false);
ResultScanner scanner = table.getScanner(scan);
int i = 0;
List<byte[]> rowList = new LinkedList<byte[]>();
// 遍历扫描器对象, 并将需要查询出来的数据row key取出
for (Result result : scanner)
{
	String row = toStr(result.getRow());
	if (i >= firstPage && i < endPage)
	{
		rowList.add(getBytes(row));
	}
	i++;
}
// 获取取出的row key的GET对象
List<Get> getList = getList(rowList);
Result[] results = table.get(getList);
List<Map<String, String>> mapList
// 遍历结果
for (Result result : results)
{
	Map<byte[], byte[]> fmap = packFamilyMap(result);
	Map<String, String> rmap = packRowMap(fmap);
	mapList.add(rmap);
}
List<Get> getList(List<byte[]> rowList)
{
	List<Get> list = new LinkedList<Get>();
	for (byte[] row : rowList)
	{
		Get get = new Get(row);

		get.addColumn(getBytes("family1"), getBytes("column1"));
		get.addColumn(getBytes("family1"), getBytes("column2"));
		get.addColumn(getBytes("family2"), getBytes("column1"));
		list.add(get);
	}
	return list;
}
Map<byte[], byte[]> packFamilyMap(Result result)
{
	Map<byte[], byte[]> dataMap = null;
	dataMap = new LinkedHashMap<byte[], byte[]>();
	dataMap.putAll(result.getFamilyMap(getBytes("family1")));
	dataMap.putAll(result.getFamilyMap(getBytes("family2")));
	return dataMap;
}
Map<byte[], byte[]> packFamilyMap(Result result)
{
	Map<byte[], byte[]> dataMap = null;
	dataMap = new LinkedHashMap<byte[], byte[]>();
	dataMap.putAll(result.getFamilyMap(getBytes("family1")));
	dataMap.putAll(result.getFamilyMap(getBytes("family2")));
	return dataMap;
}

http://www.21edu8.com/pcnet/programming/29943/

 

分享到:
评论

相关推荐

    MyBatis分页插件-PageHelper

    通过PageHelper,你可以轻松实现MyBatis项目中的复杂分页需求,提高代码的可读性和可维护性。同时,由于PageHelper的高性能和广泛支持,它已经成为MyBatis开发中的一个重要工具,大大提升了开发效率。

    Spring Data Jpa+SpringMVC+Jquery.pagination.js实现分页示例

    接下来,将详细介绍这些技术的使用方法和优势,并结合示例代码来具体说明如何将这些技术集成在一起以实现一个高效的分页系统。 首先,我们来看一下Spring Data JPA。Spring Data JPA是Spring框架的一部分,它简化了...

    浅谈Spring Data如何简化数据操作的方法

    2. **自动代码生成**:根据接口中的方法,Spring Data自动生成实现代码,减少了手动编码的工作量。 3. **通用操作**:预定义的Repository子接口提供了通用的CRUD操作,减少了重复工作。 4. **灵活的查询**:通过...

    (完整word)Java软件开发工程师简历.docx

    8. **设计原则与模式**:在分页功能的设计中,遵循面向对象的五大原则,实现了接口抽象,提高了代码的复用性和可读性。此外,使用自定义标签和权限管理模型,展示了灵活应对业务需求的能力。 9. **权限与安全**:...

    (完整word)Java软件开发工程师简历.doc

    1. 实现了分页优化,利用面向对象原则提高了代码复用性和可读性。 2. 引入了JBPM工作流引擎,提升了物流配送流程的效率,实现自动化流程控制。 3. 设计了自定义标签,根据角色权限动态生成页面菜单,增强了权限管理...

    SQL从基础到深入——本人心得

    2. 分页查询:LIMIT和OFFSET关键字用于实现数据库结果的分页展示,这对于处理大量数据的Web应用特别有用。 3. 聚合函数:COUNT、SUM、AVG、MAX和MIN等,用于计算一组值的总数、总和、平均值、最大值和最小值。 4. ...

    nc65_报表查询20w行

    因此,前端通常会实现分页功能,只加载当前视图所需的数据,提升用户体验。此外,数据筛选和排序功能也非常重要,帮助用户快速定位所需信息。 6. **报表工具**:NC报表可能使用了特定的报表工具,如BIRT、...

    基于Django Restframework的异常检测系统,分析服务为Spark SQL和Spark Mllib.zip

    "基于Django Restframework的异常检测系统,分析服务为Spark SQL和Spark Mllib" 这个标题揭示了项目的核心组成部分。Django Restframework是一个强大的Python框架,用于构建RESTful API,它是Django的一个扩展,适用...

    复习重点.docx

    在对"复习重点.docx"进行分析时,...以上这些知识领域是IT行业中的核心部分,对于开发者、系统管理员以及IT专业人员来说,掌握这些知识点是至关重要的。在复习时,不仅要理解概念,更要通过实践项目来巩固和深化理解。

    spring-data的学习笔记

    3. **创建Spring核心配置文件**:通常情况下,Spring Boot会自动配置大部分的设置,但如果需要手动配置,可以在`application.properties`或`application.yml`文件中添加配置。 4. **引入数据库连接配置**:通过配置...

Global site tag (gtag.js) - Google Analytics