问题:

需要查询某一用户某时间做了什么,PlatID和vopenid可以保证一个用户唯一,但同一时间同一用户可能日志有多条。

使用PlatID(int)、vopenid(int)和dtTime(datetime)查询

  1. 保持所有rowkey长度一致

    PlatID总是一位,vopenid不一定,通过加一个很大的值,比如10000000000,保持位数固定
  2. 由于三属性结合不能保证rowid唯一

    在原先rowed上加一定位数的随机数

体现在sql语句中:

select concat(concat(concat(concat(PlatID,'_'),concat(10000000000+vopenid,'_')),replace(dtTime,' ','-')), concat('_',100000+ceiling(rand() * 90000))) as id from log;

通过sqoop导出mysql数据到hbase:

sqoop import --driver com.mysql.jdbc.Driver --connect "jdbc:mysql://ip:port/dbname" --username root --password root --query "select concat(concat(concat(concat(PlatID,'_'),concat(10000000000+vopenid,'_')),replace(dtTime,' ','-')), concat('_',100000+ceiling(rand() * 90000))) as id,content,dtTime from log where 1=1 and  \$CONDITIONS" --hbase-table flog --column-family fl --hbase-row-key id -split-by dtTime -m 1

可以修改where条件语句,添加指定限制

此处会有dtTime的冗余,可以选择其他属性替换

改进:

select concat(concat(md5(concat(PlatID,vopenid)),unix_timestamp(dtEventTime)), 100000+ceiling(rand() * 90000))

hbase的rowkey简单设计的更多相关文章

  1. HBase的rowkey的设计原则

    HBase是三维有序存储的,通过rowkey(行键),column key(column family和qualifier)和TimeStamp(时间戳)这个三个维度可以对HBase中的数据进行快速定 ...

  2. hbase学习 rowKey的设计-4

    访问hbase table中的行,只有三种方式: 1 通过单个row key访问 2 通过row key的range 3 全表扫描 Hadoop Sequence File 文中可能涉及到的API: ...

  3. HBase之六:HBase的RowKey设计

    数据模型 我们可以将一个表想象成一个大的映射关系,通过行健.行健+时间戳或行键+列(列族:列修饰符),就可以定位特定数据,Hbase是稀疏存储数据的,因此某些列可以是空白的, Row Key Time ...

  4. HBase的rowkey设计(含实例)

    转自:http://www.aboutyun.com/thread-7119-1-1.html 对于任何系统的数据设计,我们都想提高性能,达到资源最大化利用,那么对于hbase我们产生如下问题: 1. ...

  5. 【HBase】快速了解上手rowKey的设计技巧

    目录 为什么要设计rowKey 三大原则 长度原则 散列原则 唯一原则 热点问题的解决 加盐 哈希 反转 时间戳反转 为什么要设计rowKey 首先要弄明白一点,Regions的分区就是根据数据的ro ...

  6. HBase的RowKey设计原则

    HBase是三维有序存储的,通过rowkey(行键),column key(column family和qualifier)和TimeStamp(时间戳)这个三个维度可以对HBase中的数据进行快速定 ...

  7. Hbase中rowkey设计原则

    1.热点问题 在某一时间段,有大量的数据同时对一个region进行操作 2.原因 对rowkey的设计不合理 对rowkey的划分不合理 3.解决方式 rowkey是hbase的读写唯一标识 最大长度 ...

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

    1 概述 HBase是一个分布式的.面向列的数据库,它和一般关系型数据库的最大区别是:HBase很适合于存储非结构化的数据,还有就是它基于列的而不是基于行的模式. 既然HBase是采用KeyValue ...

  9. 078 Hbase中rowkey设计原则

    1.热点问题 在某一时间段,有大量的数据同时对一个region进行操作 2.原因 对rowkey的设计不合理 对rowkey的划分不合理 3.解决方式 rowkey是hbase的读写唯一标识 最大长度 ...

随机推荐

  1. Redis持久化机制和恢复机制

    Redis持久化方式有两种: (1)RDB 对内存中数据库状态进行快照 (2)AOF 把每条写命令都写入文件,类似mysql的binlog日志 RDB 将Redis在内存中的数据库状态保存到磁盘里面, ...

  2. ajax两种不同方式的不同结果

    function upLoadAlterData(){ $("#form_main").ajaxSubmit({ url:"XX", cache:false, ...

  3. ORA-27086: unable to lock file - already in use

    问题现象: SQL> startup ORACLE instance started. Total System Global Area 1854021632 bytes Fixed Size  ...

  4. Ext JS treegrid 发生的在tree上增加itemclick 与在其它列上增加actioncolumn 发生事件冲突(event conflict)的解决办法

    Ext JS treegrid 发生的在tree上增加itemclick 与在其它列上增加actioncolumn 发生事件冲突(event conflict)的解决办法 最近在适用Ext JS4开发 ...

  5. MS CRM 2011的自定义和开发(11)——插件(plugin)开发(四)

    http://www.cnblogs.com/StoneGarden/archive/2012/02/08/2343294.html MS CRM 2011的自定义和开发(11)——插件(plugin ...

  6. 51nod1253 Kundu and Tree

    树包含N个点和N-1条边.树的边有2中颜色红色('r')和黑色('b').给出这N-1条边的颜色,求有多少节点的三元组(a,b,c)满足:节点a到节点b.节点b到节点c.节点c到节点a的路径上,每条路 ...

  7. HDU3507 print artical

    题目大意:有N个数字a[N],每输出连续的一串,它的费用是 “这行数字的平方加上一个常数M”.问如何输出使得总费用最小.(n<=500000) 分析:动态规划方程为:dp[i]=dp[j]+M+ ...

  8. .NET简谈插件系统开发模式

    摘选自[王清培]博客 http://www.cnblogs.com/wangiqngpei557/archive/2011/06/10/2077413.html 今天跟大家分享一下我们在日常开发中并不 ...

  9. HtmlParser

    HtmlParser 基本类库使用 HtmlParser 提供了强大的类库来处理 Internet 上的网页,可以实现对网页特定内容的提取和修改.下面通过几个例子来介绍 HtmlParser 的一些使 ...

  10. OpenCV实现KNN算法

    原文 OpenCV实现KNN算法 K Nearest Neighbors 这个算法首先贮藏所有的训练样本,然后通过分析(包括选举,计算加权和等方式)一个新样本周围K个最近邻以给出该样本的相应值.这种方 ...