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

hbase rowkey设计

 
阅读更多

hbase的设计:

1.每一行数据必定是给某一个应用所使用的.即有一个appkey 如 94238

2.rowkey 就应该是这样了

concat_ws('\u0004'  		--使用 \u0004 作为每个字段分隔符
,concat(substr(md5(concat('app_name','94238')),1,4),':md5') --使用md5打散不同app的存放位置 
,'app_name:biz'				--这里开始实质的内容. 业务类型(biz)是 app_name
,'94238:app'				--appkey是94238
,concat('ddd:',stat_date)	--日期
,'2:cate'					--具体的种类
) as rowkey

 在来一个例子

 

select
concat(concat(substr(MD5(concat(coalesce(cat_id,''),'92811')),1,4),':md5'),'\004',cat_id,':cate1\004','92811:app\004',bc_type,':biz\004dhr:','${date}${hour}','\004',seller_id,':seller') as rowkey
stat_date		 		--统计日期
,stat_hour				--当前小时
,seller_id              --卖家id
,seller_nick            --卖家 nick
,bc_type                --bc类型
,cat_id                 --主营类目id
,cat_name               --主营类目名称
,pay_amt				--金额
,rank_amt				--排名
from seller_top_500 --卖家排名

--这个rowkey的设计背景是统计  每个大类小类下卖家金额top500
--根据'\004'做一级分隔符,':'做为二级分割,1-4位为MD5打散使用
--整个rowkey的含义分别是 先做md5,后依次是cate_id,appkey(92811),bc_type,时间,seller_id
--rowkey中每一个子key又分前缀后缀之分(值在前还是在后),比如cat_id就是前缀,时间(dhr)就是后缀. 
--之所以时间是后缀的是因为,应用本身会精确定位到每一个小时,所以还是应该把每个小时的数据都放在一起
--之所以别的用前缀是因为,需要把数据打的越散越好.
--为什么不用seller_id作为打散列,而用cate_id,原因是取数是根据大类小类取top500,把seller_id,打散了完全没有意义
--为什么不用大类作为打散列的原因,是大类只有 B和C 2个值.打散的意义也不大.
--业务取数的时候有个cate_id的维表,根据上面的逻辑拼出一个rowkey来.
--scan 'table',STARTROW=>'md5+cate_id+app+bc_type+yyyymmddhh'

 

分享到:
评论

相关推荐

    hbase的Rowkey设计方案.pdf

    《HBase的Rowkey设计详解》 HBase作为一种高性能的分布式NoSQL数据库,因其在OLAP实时分析中的卓越性能而受到广泛关注。其核心特性之一便是通过Rowkey进行数据查询,因此Rowkey的设计对于HBase的读写性能至关重要。...

    rowkey设计案例.zip

    一个良好的RowKey设计能够保证数据的快速访问和均匀分布,从而避免热点问题。热点问题指的是大量请求集中于某些特定的RowKey,导致这些节点负载过高,影响整体系统性能。 在本案例中,"Equidistribution.java"可能...

    hbase的rowkey设计与hbase的协处理器运用.docx

    HBase RowKey 设计与协处理器运用 HBase 是一个基于 HDFS 的分布式、面向列的 NoSQL 数据库,具有高性能、可靠性和扩展性等特点。本文将详细介绍 HBase 的 RowKey 设计和协处理器运用。 HBase 的介绍 HBase 是一...

    大数据性能调优之HBase的RowKey设计.docx

    "大数据性能调优之HBase的RowKey设计" 大数据功能调优之HBase的RowKey设计是指在HBase中对RowKey的设计,以提高HBase的性能和可扩展性。RowKey是HBase中的一种二进制码流,可以是任意字符串,最大长度为64kb,但...

    HBase-RowKey与索引设计(高清)

    除了RowKey设计之外,索引在HBase中也是提升查询效率的重要手段。HBase的索引主要分为二级索引和组合索引。二级索引是通过在HBase中创建一个或多个额外的索引表来实现的,它可以用来优化对非RowKey字段的快速查询。...

    HBase分页查询的rowkey设计技巧

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

    bitcarmanlee#easy-algorithm-interview-and-practice#Hbase rowkey

    2)、RowKey散列原则:如果RowKey是按时间戳的方式递增,不要将时间放在二进制码的前面,建议将RowKey的高位作为散列字段,由程序循环生成,低位放时间

    Hbase总结.docx

    以下是关于HBase Rowkey设计的一些关键知识点: 1. 唯一性原则:Rowkey必须确保全局唯一,避免数据冲突。这可以通过结合业务主键和时间戳或者哈希值来实现。 2. 长度原则:Rowkey应尽可能短,一般建议不超过16个...

    2-2+HBase-RowKey+与索引设计.zip

    在IT行业中,尤其是在大数据处理领域,...总之,理解并掌握HBase的RowKey设计和索引策略是提升HBase性能的关键。在实际工作中,我们需要根据数据的特性和查询模式,灵活运用各种设计技巧,确保系统的稳定和高效运行。

    Hbase行键设计(rowkey)实现多条件查询

    总之,HBase的RowKey设计是一个平衡各种因素的过程,包括数据类型转换、排序规则、散列性和存储效率。通过巧妙地设计RowKey和利用自定义比较器,可以优化多条件查询,提高系统的整体性能。然而,这种方法并不适用于...

    HBASE调优 rowkey

    更重要的是,合理设计rowkey,因为HBase是基于rowkey的字典顺序进行存储的。rowkey的设计应尽量短小,以减少存储空间的消耗和提高查询效率。 客户端调优涉及多个参数。例如,设置scanner缓存大小可以减少对服务器的...

    HBase数据库设计.doc

    【HBase数据库设计】 HBase是一种基于列存储的分布式数据库,它是Apache Hadoop生态系统的一部分,设计用于处理海量数据。HBase的主要特征包括: 1. **分布式存储**:HBase构建在Hadoop的HDFS(Hadoop Distributed...

    hbase原理和设计

    有效的RowKey设计对于HBase的性能至关重要。良好的RowKey设计可以减少热点问题,提高查询效率。以下是一些RowKey设计的通用原则: 1. **避免热点问题**:确保RowKey的分布尽可能均匀,避免所有访问集中在少数几个...

    大数据开发之案例实践Hbase的设计及企业优化视频教程(视频+讲义+笔记+配置+代码+练习)

    │ Hbase表中rowkey及列簇的设计 │ Hbase表设计-微博案例的表设计 │ Hbase表设计-微博案例的业务实现 │ Hbase列簇属性的介绍 │ Hbase性能优化-GC调优 │ Hbase性能优化-内存管理 │ Hbase性能优化-flush、...

    阿里HBase业务设计实践

    通过精心设计RowKey、优化查询模式以及建立健全的监控体系,可以在实际业务场景中有效利用HBase的强大功能。同时,也需要注意到HBase的局限性,如不支持复杂的事务处理等,在选择技术栈时需结合具体业务需求进行综合...

    HBase多表关联查找资料

    本文将详细介绍 HBase 多表关联查找的知识点,涵盖了 HBase 表结构设计、rowkey 设计、columnfamily 设计、column 设计等方面的内容,并结合实际应用场景,提供了一些实用的设计方法和思路。 1. 表的属性 HBase 表...

Global site tag (gtag.js) - Google Analytics