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设计⽅案 1.1 hbase的概述 的概述 HBase由于其存储和读写的⾼性能,在OLAP即时分析中越来越发挥重要的作⽤。作为Nosql数据库的⼀员,HBase查询只能通过其 Rowkey来查询(Rowkey⽤来表⽰唯⼀⼀⾏记录),...
阿里云 吴阳平(明惠) 阿里云HBase业务架构师 主要章节:
Spark存储数据到HBase实现RowKey完全散列-多进程多线程间Random完全随机,完美解决热点问题
该文档是介绍hbase的rowkey设计与hbase的协处理器运用,与大家分享!
HBase-RowKey与索引设计(高清) HBase-RowKey与索引设计(高清)HBase-RowKey与索引设计(高清)
大数据性能调优之HBase的RowKey设计.docx
用户历史订单列表查询rowkey设计技巧 最左前缀原则
2)、RowKey散列原则:如果RowKey是按时间戳的方式递增,不要将时间放在二进制码的前面,建议将RowKey的高位作为散列字段,由程序循环生成,低位放时间
HBase中,表会被划分为1...n个Region,被托管在RegionServer中。Region二个重要的属性:StartKey与EndKey表示这个Region维护的rowKey范围,当我们要读/写数据时,如果rowKey落在某个start-endkey范围内,那么就会定位...
HBase的模式Schema设计的一些概念和原则 5 1)模式的创建与更新 5 2)列族的数量 6 3)行键设计RowKey 6 5. HBase的拓扑结构是什么? 7 1)拓扑结构 7 2)HBase与ZooKeeper的关系是什么? 7 3)HBase的内部结构管理...
HBASE的使用跟业务逻辑有很强的关联性,就像本文里提到的例子使用ElasticSearch更合适。...本文主要内容是通过合理hbase行键(rowkey)设计实现快速的多条件查询,所采用的方法将所有要用于查询中的列经过一些处理后
2-2+HBase-RowKey+与索引设计
HBASE调优 HBASE技术框架与存储模型 v HBASE调优 v 硬件 v 系统参数 v java v 表的设计 v 客户端 v 服务器端
本发明涉及涉及在hbase上进行海量GIS矢量数据空间索引编码及建立的方法,更特定言之,本发明涉及对点、线、面二维矢量数据映射到一维的字符串型rowkey索引,使之能够用hbase存储海量矢量数据,提供高性能空间查询...
│ Hbase表中rowkey及列簇的设计 │ Hbase表设计-微博案例的表设计 │ Hbase表设计-微博案例的业务实现 │ Hbase列簇属性的介绍 │ Hbase性能优化-GC调优 │ Hbase性能优化-内存管理 │ Hbase性能优化-flush、...
hbase原理和设计,包括二级索引,rowkey设计,常见的坑.
课时23:Rowkey设计与集群常见故障处理 课时24:集群调优经验分享 课时25:项目介绍与Solr环境搭建 课时26:数据层设计与中文分词器配置 课时27:Spring集成HBase之核心操作 课时28:Spring集成HBase之核心操作...
因为面向列的特点,Hbase只能单单地以rowkey为主键作查询,而无法对表进行多维查询和join操作,并且查询通常都是全表扫描,耗费资源较大,查询效率较低。类比于传统型数据库里的一些查询方式,本文对Hbase的存储原理进行了...