`
william_ai
  • 浏览: 21251 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

HBase 源码

 
阅读更多
HBase的源码中FilterList是一个不常用到的类,今日用到了,小研究了下,发现还是有优化的空间的。优化以后可以减少近一半的 ( operator == ? ) 判断。
// 优化前
	public ReturnCode filterKeyValue(KeyValue v) {
		ReturnCode rc = operator == Operator.MUST_PASS_ONE ? ReturnCode.SKIP
				: ReturnCode.INCLUDE;
		for (Filter filter : filters) {
			if (operator == Operator.MUST_PASS_ALL) { // @here
				if (filter.filterAllRemaining()) {
					return ReturnCode.NEXT_ROW;
				}
				ReturnCode code = filter.filterKeyValue(v);
				switch (code) {
					case INCLUDE:
						continue;
					case NEXT_ROW:
					case SKIP:
						return ReturnCode.SKIP;
					default:
						return code;
				}
			} else if (operator == Operator.MUST_PASS_ONE) { //@here
				if (filter.filterAllRemaining()) {
					continue;
				}

				switch (filter.filterKeyValue(v)) {
					case INCLUDE:
						rc = ReturnCode.INCLUDE;
						// must continue here to evaluate all filters
					case NEXT_ROW:
					case SKIP:
						// continue;
				}
			}
		}
		return rc;
	}

优化后
	public ReturnCode filterKeyValueNew(KeyValue v) {
		ReturnCode rc = operator == Operator.MUST_PASS_ONE ? ReturnCode.SKIP
				: ReturnCode.INCLUDE;
		switch (operator) {
			case MUST_PASS_ALL: //@here
				for (Filter filter : filters) {
					if (filter.filterAllRemaining()) {
						return ReturnCode.NEXT_ROW;
					}
					ReturnCode code = filter.filterKeyValue(v);
					switch (code) {
						case INCLUDE:
							continue;
						case NEXT_ROW:
						case SKIP:
							return ReturnCode.SKIP;
						default:
							return code;
					}
				}
				break;
			case MUST_PASS_ONE: //@here
				for (Filter filter : filters) {
					if (filter.filterAllRemaining()) {
						continue;
					}
					if (filter.filterKeyValue(v) == ReturnCode.INCLUDE) {
					rc = ReturnCode.INCLUDE;
				}
				}
				break;
			default:
				break;
		}
		return rc;
	}


在filterRow和filterRowKey两个方法中也做同样的修改。
分享到:
评论

相关推荐

    【No0057】HBase源码解析与开发实战.txt

    ### HBase源码解析与开发实战 #### 一、HBase简介 HBase是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的 Google 论文 “Bigtable:一个结构化数据的分布式存储系统”。就像 Bigtable 利用了...

    HBase源码分析

    《深入剖析HBase源码:理解其核心机制》 HBase,作为一款基于分布式存储的NoSQL数据库,广泛应用于大数据领域。它构建于Hadoop之上,利用HDFS提供高可靠性和高可扩展性。本文将深入探讨HBase的实现原理,特别是其...

    hbase 源码包

    三、HBase源码解析 1. **Region分配与负载均衡**:在`org.apache.hadoop.hbase.master`包下,RegionServerTracker类负责监控Region服务器状态,LoadBalancer类实现Region的负载均衡策略。 2. **元数据管理**:元...

    hbase源码包和测试用例

    《深入理解HBase:源码剖析与测试实践》 HBase,全称为Hadoop Database,是一种基于Apache Hadoop的开源分布式非关系型数据库。它的设计灵感来源于Google的Bigtable,旨在处理大规模数据集,通常在PB级别以上。...

    HBase源码(hbase-2.4.9-src.tar.gz)

    HBase源码(hbase-2.4.9-src.tar.gz)是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统(File ...

    hbase源码带中文注释

    "hbase源码带中文注释"的资源对学习和理解HBase的工作原理以及如何进行开发具有极大的帮助。下面,我们将深入探讨HBase的关键组件和概念。 1. **HBase Common**: 这是HBase的核心库,包含了所有公共的类和接口,如...

    HBase源码分析与开发实战

    HBase源码分析与开发实战视频技术讲解高阶视频教程以及课件,内部讲解资料 内容非常详细 值得想要提高薪水的人去学习了解

    hadoop2.x、Hive、HBase源码解析+企业级应用

    hadoop2.x、Hive、HBase源码解析+企业级应用视频,本人花钱买的视频,全部的还没有看,如果感觉老师讲的不好,请不要碰我,谢谢

    Hbase权威指南 随书源代码 源码包 绝对完整版

    在研究HBase源码时,我们可以关注以下几个核心概念和组件: 1. **Region服务器**:HBase的主要工作单元,负责存储和处理表的数据。每个Region服务器管理多个Region,Region包含表的一部分行。 2. **Region**:...

    hbase源码分析

    ### HBase源码分析 #### 一、HBase性能测试要点与分析 ##### 1.1 测试环境 - **硬件配置**: - 客户端:1台 - RegionServer:5台 - Master:1台 - ZooKeeper:3台 - **软件配置**: - CPU:每台服务器配备8...

    HBase实战源码

    《HBase实战源码》是针对Apache HBase这一分布式、高性能、基于列族的NoSQL数据库的深度解析书籍。源码分析是理解HBase工作原理和技术细节的重要途径。HBase在大数据领域扮演着关键角色,它能够处理海量数据并提供...

    Hbase源码笔记资料.zip

    hive编译,jars,HBaseScanner构建.pptx,HBase之RegionServer命令启动流程.pptx,扩展.docx,尚硅谷大数据技术之HBase.xmind,尚硅谷大数据技术之HBase.pdf等等 很全。

    jamon-dist-2013.12.28.zip

    hbase源码调试的时候,需要用它生成hbase-server模块的jamon模版代码,其官网需要翻墙

    Hadoop2.4.1上自编译安装HBase0.98.5

    2. 配置环境:修改`dev-support/generate-hadoopX-poms.sh`脚本,将`hbase_home`变量设置为实际的HBase源码目录。 3. 更新Hadoop依赖:编辑`pom.xml`文件,将`<hadoop-two.version>`从2.2.0改为2.4.1,以匹配你的...

    hbase-0.98.1源码包

    源码包“hbase-0.98.1-src.tar.gz”提供了HBase 0.98.1版本的完整源代码,对于理解其内部工作原理、进行二次开发或调试是非常有价值的。 HBase的核心概念包括: 1. 表:HBase中的表由行和列族组成,表名全局唯一。...

    hbase-0.98.12.1-src.tar.gz

    《深入剖析HBase 0.98.12.1源码》 HBase,作为Apache软件基金会的一个开源项目,是构建在Hadoop文件系统(HDFS)之上的分布式列式数据库,它提供了高可靠性、高性能、可伸缩的数据存储解决方案。HBase 0.98.12.1是...

Global site tag (gtag.js) - Google Analytics