使用必须是线性安全:
package coprocessor; import java.io.IOException; import org.apache.hadoop.hbase.CoprocessorEnvironment; import org.apache.hadoop.hbase.client.HTableInterface; import org.apache.hadoop.hbase.client.HTablePool; import org.apache.hadoop.hbase.client.Put; import org.apache.hadoop.hbase.coprocessor.BaseRegionObserver; import org.apache.hadoop.hbase.coprocessor.ObserverContext; import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment; import org.apache.hadoop.hbase.regionserver.wal.WALEdit; import org.apache.hadoop.hbase.util.Bytes; public class AISObserver extends BaseRegionObserver { private HTablePool pool = null; HTableInterface table1 = null; private final byte[] tablename = Bytes.toBytes("zchx_ais_index"); private final byte[] family = Bytes.toBytes("info"); private final byte[] q = Bytes.toBytes("index"); public void start(CoprocessorEnvironment env) throws IOException { // this.ShipAtable_index = new HTable(env.getConfiguration(), "zchx_ais_index"); pool = new HTablePool(env.getConfiguration(), 10); table1 = pool.getTable(tablename); table1.setAutoFlush(false); } @Override public void prePut(ObserverContext<RegionCoprocessorEnvironment> e, Put put, WALEdit edit, boolean writeToWAL) throws IOException { byte[] row = put.getRow(); String rowkey = Bytes.toString(row); if(rowkey.length()==24){ StringBuilder sb = new StringBuilder(); sb.append(rowkey.substring(10, 24)); String type = rowkey.substring(9,10); sb.append(rowkey.substring(0, 9)); Put secPut = new Put(Bytes.toBytes(sb.toString())); secPut.add(family,q,row); if(type.equals("a")){ table1.put(secPut); } // this.table.flushCommits(); sb = null; } } @Override public void stop(CoprocessorEnvironment env) throws IOException { pool.close(); } }
相关推荐
HBase 二级索引 HBase 二级索引是指在 HBase 之上建立的一种二级索引机制,用于提高查询效率。根据华为公布的 HBase 二级索引实现方案,本方案主要参照了该方案,设计了 HBase 的二级索引机制。 知识点一:HBase ...
奇虎360 HBASE二级索引的设计与实践内容总结: 背景介绍: 在奇虎360的实际应用中,仅通过Rowkey(RK)进行索引存在一系列问题。例如,索引较为单一,无法满足多维度查询需求,例如字段或列的多维度查询。此外,...
二级索引在HBase中的应用,是为了弥补其一级索引(RowKey索引)的不足,它为非RowKey字段提供了快速访问的通道。 首先,我们需要理解HBase的一级索引。HBase的表数据是按照RowKey排序存储的,RowKey是唯一标识一条...
### 360HBASE二级索引的设计与实践 #### 背景 在大数据处理领域,特别是面对海量数据(如千亿级别的数据量)时,高效的数据存储与快速查询成为了关键的技术挑战之一。HBase作为一种分布式、面向列的NoSQL数据库...
CDH 使用 Solr 实现 HBase 二级索引 在大数据处理中,HBase 是一种流行的 NoSQL 数据库,用于存储大量的数据。然而,在查询和检索数据时,HBase 的性能可能不太理想。这是因为 HBase 是基于 Key-Value 的存储方式,...
本方案主要参照了华为公布的HBase二级索引实现方案。为每个DataTable创建一个与之对应的IndexTable,通过各种途径,保证IndexTable Region与DataTable Region一一对应,并且存储在同一个RegionServer上。
### HBase二级索引与JOIN知识点详解 #### HBase简介 - **定义**: HBase是一种分布式、面向列的NoSQL数据库系统,它基于Google Bigtable论文实现。 - **底层架构**: HBase的数据存储依赖于Hadoop Distributed File ...
### hbase+solr创建二级索引完整操作 #### 一、概述 本文档详细介绍了如何利用HBase和Solr创建二级索引的过程。通过整合HBase与Solr的优势,可以构建高性能的数据存储与检索系统。HBase作为分布式列族数据库,能够...
实验结果表明,这种基于协处理器的二级索引方法在查询性能上优于HBase内置的过滤查询,同时与基于ElasticSearch的二级索引相比,查询速度更快且空间开销更小。这意味着,这种二级索引方法在满足高效查询需求的同时,...
"基于phoenix的Hbase二级全文索引方法及系统" 本文主要介绍了基于phoenix的Hbase二级全文索引方法及系统,旨在解决Hbase数据的全文检索问题。该方法包括两大步骤:一是对Hbase原始数据表建立二级全文索引表,并存储...
测试代码,目的是借助solr实现hbase二级索引,以使hbase支持高效的多条件查询。主要通过hbase的coprocessor的Observer实现,通过coprocessor在记录插入hbase时向solr中创建索引。 项目核心为...
public class IndexBuilder3 extends Configured{ public static class MapperIndex extends TableMapper,Put>{ private String tableName; private String columnFamily;...// 该列对应的索引表名字
在这篇文章中,作者周伟、刘希、陈浩详细探讨了HBase分布式二级索引的通用方案,并研究了如何将SolrCloud作为一个分布式索引器引入到HBase数据库中,以提高数据检索效率。 关键词“分布式存储”指的是将数据分布在...
本文将深入探讨如何利用协处理器(Coprocessor)机制在HBase中实现分类的二级索引设计,以提升查询效率并优化数据管理。 一、HBase与二级索引 HBase是建立在Hadoop之上的键值存储系统,它以行键、列族、列限定符和...
基于Solr的HBase多条件查询原理很简单,将HBase表中涉及条件过滤的字段和rowkey在Solr中建立索引,通过Solr的多条件查询快速获得符合过滤条件的rowkey值,拿到这些rowkey之后在HBASE中通过指定rowkey进行查询。
一、解决的问题 1、RowKey 例子 ...二、对于上面需求 简单解决方案(二级索引 相当于添加一层映射关系到 原RowKey) 增加新的Hbase表 RowKey:hive_table__date___date__hive_table (解释:hive_tabl