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设计详解》 HBase作为一种高性能的分布式NoSQL数据库,因其在OLAP实时分析中的卓越性能而受到广泛关注。其核心特性之一便是通过Rowkey进行数据查询,因此Rowkey的设计对于HBase的读写性能至关重要。...
一个良好的RowKey设计能够保证数据的快速访问和均匀分布,从而避免热点问题。热点问题指的是大量请求集中于某些特定的RowKey,导致这些节点负载过高,影响整体系统性能。 在本案例中,"Equidistribution.java"可能...
HBase RowKey 设计与协处理器运用 HBase 是一个基于 HDFS 的分布式、面向列的 NoSQL 数据库,具有高性能、可靠性和扩展性等特点。本文将详细介绍 HBase 的 RowKey 设计和协处理器运用。 HBase 的介绍 HBase 是一...
"大数据性能调优之HBase的RowKey设计" 大数据功能调优之HBase的RowKey设计是指在HBase中对RowKey的设计,以提高HBase的性能和可扩展性。RowKey是HBase中的一种二进制码流,可以是任意字符串,最大长度为64kb,但...
除了RowKey设计之外,索引在HBase中也是提升查询效率的重要手段。HBase的索引主要分为二级索引和组合索引。二级索引是通过在HBase中创建一个或多个额外的索引表来实现的,它可以用来优化对非RowKey字段的快速查询。...
用户历史订单列表查询rowkey设计技巧 最左前缀原则
2)、RowKey散列原则:如果RowKey是按时间戳的方式递增,不要将时间放在二进制码的前面,建议将RowKey的高位作为散列字段,由程序循环生成,低位放时间
以下是关于HBase Rowkey设计的一些关键知识点: 1. 唯一性原则:Rowkey必须确保全局唯一,避免数据冲突。这可以通过结合业务主键和时间戳或者哈希值来实现。 2. 长度原则:Rowkey应尽可能短,一般建议不超过16个...
在IT行业中,尤其是在大数据处理领域,...总之,理解并掌握HBase的RowKey设计和索引策略是提升HBase性能的关键。在实际工作中,我们需要根据数据的特性和查询模式,灵活运用各种设计技巧,确保系统的稳定和高效运行。
总之,HBase的RowKey设计是一个平衡各种因素的过程,包括数据类型转换、排序规则、散列性和存储效率。通过巧妙地设计RowKey和利用自定义比较器,可以优化多条件查询,提高系统的整体性能。然而,这种方法并不适用于...
更重要的是,合理设计rowkey,因为HBase是基于rowkey的字典顺序进行存储的。rowkey的设计应尽量短小,以减少存储空间的消耗和提高查询效率。 客户端调优涉及多个参数。例如,设置scanner缓存大小可以减少对服务器的...
【HBase数据库设计】 HBase是一种基于列存储的分布式数据库,它是Apache Hadoop生态系统的一部分,设计用于处理海量数据。HBase的主要特征包括: 1. **分布式存储**:HBase构建在Hadoop的HDFS(Hadoop Distributed...
有效的RowKey设计对于HBase的性能至关重要。良好的RowKey设计可以减少热点问题,提高查询效率。以下是一些RowKey设计的通用原则: 1. **避免热点问题**:确保RowKey的分布尽可能均匀,避免所有访问集中在少数几个...
│ Hbase表中rowkey及列簇的设计 │ Hbase表设计-微博案例的表设计 │ Hbase表设计-微博案例的业务实现 │ Hbase列簇属性的介绍 │ Hbase性能优化-GC调优 │ Hbase性能优化-内存管理 │ Hbase性能优化-flush、...
通过精心设计RowKey、优化查询模式以及建立健全的监控体系,可以在实际业务场景中有效利用HBase的强大功能。同时,也需要注意到HBase的局限性,如不支持复杂的事务处理等,在选择技术栈时需结合具体业务需求进行综合...
本文将详细介绍 HBase 多表关联查找的知识点,涵盖了 HBase 表结构设计、rowkey 设计、columnfamily 设计、column 设计等方面的内容,并结合实际应用场景,提供了一些实用的设计方法和思路。 1. 表的属性 HBase 表...