hbase学习 rowKey的设计-4

技术hbase学习 rowKey的设计-4 hbase学习 rowKey的设计-4hbase学习 rowKey的设计-4访问hbase table中的行,只有三种方式:
1 通过单个row key访问

Hbase学习rowKey设计-4

hbase学习 rowKey的设计-4

只有三种方法可以访问hbase表中的行:

1通过单行键访问

范围通过行键2

3全表扫描

Hadoop序列文件

本文可能涉及的应用编程接口:

Hadoop/HDFS :3358 Hadoop . Apache . org/common/docs/current/API/

hbase :http://hbase . Apache . org/API docs/index . html overview-summary . html

Begin!

HBase的查询实现只提供了两种方式:

1.根据指定的RowKey,get方法获取唯一的记录(org.apache.hadoop.hbase.client.Get)

2.根据指定的条件,使用扫描方法获得一批记录(org.apache.hadoop.hbase.client.Scan)

实现条件查询功能,采用扫描方式,使用扫描时需要注意以下几点:

1.扫描可以通过setcache和setBatch方法提高速度(用空间换取时间);

2.可以通过setStartRow和setEndRow来限制扫描。范围越小,性能越高。

通过巧妙的RowKey设计,我们可以让批处理记录集合中的元素靠得很近(应该在同一个Region下),在遍历结果的时候可以得到很好的性能。

3.scan可以通过setFilter方法添加过滤器,这也是分页和多条件查询的基础。

下面是一个图像示例:

我们在表中存储文件信息,每个文件有五个属性:文件id(长,全局唯一)、创建时间(长)、文件名(字符串)、类别名(字符串)和所有者(用户)。

我们可以输入查询条件:文件创建的时间间隔(例如2012年9月1日至2012年9月14日创建的文件)、文件名(“中国之声”)、类别(“综艺”)和所有者(“浙江卫视”)。

假设我们目前有以下文档:

内容标识创建时间名称类别用户标识1 2 3 4 5 6 7 8 9 10

20120902

中国好声音1号

品种;演出

一个

20120904

中国好声音2号

品种;演出

一个

20120906

中国好声音外卡大赛

品种;演出

一个

20120908

中国好声音第三期

品种;演出

一个

20120910

中国好声音4号

品种;演出

一个

20120912

中国语音玩家访谈

综艺花絮

2

20120914

中国好声音5号

品种;演出

一个

20120916

中国好声音录制花絮

综艺花絮

2

20120918

《Theway》独家专访

什一税

20120920

加多宝凉茶广告

综艺广告

这里的用户标识应该对应于另一个用户表,暂时不会列出。我们只需要知道UserID的含义:

1代表浙江卫视;2 .代表好声音的船员;3代表XX微博;4代表提案国。

在调用查询界面(20120901、20121001、‘中国之声’、‘综艺’、‘浙江卫视’)时,同时将以上五个条件输入find。

这个时候,我们应该拿到记录。应该有第1、2、3、4、5和7条。第六条不属于浙江卫视,不宜选。

我们在设计RowKey时可以这样做:采用UserID + CreateTime + FileID组成rowKey,这样既能满足多条件查询,又能有很快的查询速度。

请注意以下几点:

1.每个记录的RowKey,每个字段都需要填充到相同的长度。预计如果我们有多达100,000个用户,用户标识应该统一填充到6位数,例如000001,000002。

2.在末尾添加全局唯一的FileID的目的是使每个文件对应的记录全局唯一。当用户标识与创建时间相同时,避免重叠两个不同的文件记录。

根据此RowKey,存储了上述文件记录,并且在HBase表中找到了以下结构:

rowKey(用户标识6乘以8文件标识6)名称类别.

00000120120902000001

00000120120904000002

00000120120906000003

00000120120908000004

00000120120910000005

00000120120914000007

00000220120912000006

00000220120916000008

00000320120918000009

00000420120920000010

怎样用这张表

创建扫描对象后,我们设置开始行(00000120120901)和结束行(0000120120914)。

这样,扫描时只扫描userID=1的数据,时间范围限定在这个指定的时间段,满足了按用户以及按时间范围对结果的筛选.而且因为记录是集中存储的,所以性能非常好。

然后使用SingleColumnValueFilter(http://www . Sina.com/)总共四个,分别约束名称和类别的上限和下限。org.apache.hadoop.hbase.filter.SingleColumnValueFilter

满足按同时按文件名以及分类名的前缀匹配。

(注意:使用SingleColumnValueFilter会影响查询性能,在真正处理海量数据时会消耗很大的资源,且需要较长的时间。

如果需要分页,可以添加另一个页面过滤器来限制返回记录的数量。

以上,我们完成了支持多条件查询的高性能HBase表结构的设计。

在后续的博文中我将多举几种应用场景下rowKey的,可以满足简单条件下海量数据瞬时返回的查询功能)

myBlog:http://blog.csdn.net/pirateleo/

文章:http://blog.csdn.net/lzm1340458776/article/details/44941953

转载:

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/154982.html

(0)

相关推荐

  • C++怎么为模板参数定义概念

    技术C++怎么为模板参数定义概念这篇文章主要讲解了“C++怎么为模板参数定义概念”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++怎么为模板参数定义概念”吧!T.10:

    攻略 2021年11月24日
  • max是什么意思车上的,雷克萨斯max什么意思

    技术max是什么意思车上的,雷克萨斯max什么意思max的意思是最大max是什么意思车上的,如果是车内的max按键,那一般是空调的强冷按键。在发动机机油尺上,也有max。max是最高液位,添加机油时不要让液位超过max刻

    生活 2021年10月22日
  • Oracle11g RAC下ASM的管理和维护方法有哪些?

    技术Oracle11g RAC下ASM的管理与维护方法是什么这篇文章主要介绍“Oracle11g RAC下ASM的管理与维护方法是什么”,在日常操作中,相信很多人在Oracle11g RAC下ASM的管理与维护方法是什么

    攻略 2021年12月22日
  • 水浒传人物名字,《水浒传》中的主要人物是谁

    技术水浒传人物名字,《水浒传》中的主要人物是谁公孙胜 水浒传人物名字,鲁智深 ,林冲 ,吴用,李逵,宋江 ,武松,杨志等。1、姓名:宋江
    绰号:及时雨
    性格特点:为人仗义、善于用人,但总想招安。
    主要事迹:私放晁盖、怒杀

    生活 2021年10月30日
  • first的基数词,1~15的基数词和序数词的缩写

    技术first的基数词,1~15的基数词和序数词的缩写first one (1st.)2first的基数词、second two (2nd.)
    3、third three (3rd.)
    4、fourth

    生活 2021年10月24日
  • 苹果怎么设置铃声,苹果手机怎么设置铃声图解

    技术苹果怎么设置铃声,苹果手机怎么设置铃声图解步骤/方法如下苹果怎么设置铃声: 》》》》》》 下载并打开最新版本的iTunes,然后点击左上角的第一个按钮【文件】,然后选择【将文件添加到资料库】; 找到你想要添加的音乐文

    生活 2021年10月27日