本套系列博客从真实商业环境抽取案例进行总结和分享,并给出Spark源码解读及商业实战指导,请持续关注本套博客。版权声明:本套Spark源码解读及商业实战归作者(秦凯新)所有,禁止转载,欢迎学习。

1:用户使用过哪些APP和使用时长(以用户id, 天为单位)

周期内时长统计

table-->behavior_user_app_201809
rowKey-->userid:20180904
columnfamily-->timeLen
column --> appName (包名为多个)
value --> long值  String tableName = "behavior_user_app_" + DateUtils.getMonthByHour(model.getHour());
Table table = HBaseClient.getInstance(this.props).getTable(tableName);
String rowKey = model.getUserId()+":"+DateUtils.getDayByHour(model.getHour());
table.incrementColumnValue(Bytes.toBytes(rowKey), Bytes.toBytes("timeLen"), Bytes.toBytes(model.getPackageName()), model.getTimeLen());
复制代码

2:用户每小时的使用应用的时长(以用户id,天为单位)

一天中不同时段的玩机趋势

table-->behavior_user_hour_time_201809
rowKey-->userid:20180904
columnfamily-->timeLen
column --> 12 13 14 ... ...(小时24个)
value --> long值 String tableName = "behavior_user_hour_time_" + DateUtils.getMonthByHour(model.getHour());
Table table = HBaseClient.getInstance(this.props).getTable(tableName);
String rowKey = model.getUserId()+":"+DateUtils.getDayByHour(model.getHour());
table.incrementColumnValue(Bytes.toBytes(rowKey), Bytes.toBytes("timeLen"), Bytes.toBytes(DateUtils.getOnlyHourByHour(model.getHour())), model.getTimeLen());
复制代码

3:用户每天的玩机时长(以用户id为单位)

一个月中不同天数的玩机趋势

table-->behavior_user_day_time_201809
rowKey-->userid
columnfamily-->timeLen
column --> 1 2 3 ... ...(天数:31)
value --> long值 String tableName = "behavior_user_day_time_" + DateUtils.getMonthByHour(model.getHour());
Table table = HBaseClient.getInstance(this.props).getTable(tableName);
String rowKey = String.valueOf(model.getUserId());
table.incrementColumnValue(Bytes.toBytes(rowKey), Bytes.toBytes("timeLen"), Bytes.toBytes(DateUtils.getOnlyDayByHour(model.getHour())), model.getTimeLen());
复制代码

4:用户每个应用每小时的玩机时长(以用户id,天,应用为单位)

table-->behavior_user_day_app_time_201809
rowKey-->userid:day:packageName
columnfamily-->timeLen
column --> 12 13 14 ... ...(小时24个)
value --> long值 String tableName = "behavior_user_day_app_time_" + DateUtils.getMonthByHour(model.getHour());
Table table = HBaseClient.getInstance(this.props).getTable(tableName);
String rowKey = model.getUserId()+":"+DateUtils.getDayByHour(model.getHour())+":"+model.getPackageName();table.incrementColumnValue(Bytes.toBytes(rowKey), Bytes.toBytes("timeLen"), Bytes.toBytes(DateUtils.getOnlyHourByHour(model.getHour())), model.getTimeLen());
复制代码

5:用户每个应用每天的玩机时长(以用户id,应用为单位)

table-->behavior_user_day_time_201809
rowKey-->userid:packageName
columnfamily-->timeLen
column --> 1 2 3 ... ...(天数:31)
value --> long值 String tableName = "behavior_user_day_app_time_" + DateUtils.getMonthByHour(model.getHour());
Table table = HBaseClient.getInstance(this.props).getTable(tableName);
String rowKey = model.getUserId()+":"+model.getPackageName();table.incrementColumnValue(Bytes.toBytes(rowKey), Bytes.toBytes("timeLen"), Bytes.toBytes(DateUtils.getOnlyDayByHour(model.getHour())), model.getTimeLen());
复制代码

6:总结

秦凯新 于深圳

HBase数据模型深入剖析-OLAP商业环境实战相关推荐

  1. HBase的Compact参数设置及数据读写流程剖析-OLAP商业环境实战

    本套系列博客从真实商业环境抽取案例进行总结和分享,并给出Spark商业应用实战指导,请持续关注本套博客.版权声明:本套Spark商业应用实战归作者(秦凯新)所有,禁止转载,欢迎学习. 秦凯新的技术社区 ...

  2. Spark ShuffleManager内存缓冲器SortShuffleWriter设计思路剖析-Spark商业环境实战

    本套系列博客从真实商业环境抽取案例进行总结和分享,并给出Spark源码解读及商业实战指导,请持续关注本套博客.版权声明:本套Spark源码解读及商业实战归作者(秦凯新)所有,禁止转载,欢迎学习. Sp ...

  3. Spark PersistenceEngine持久化引擎与领导选举代理机制内核原理深入剖析-Spark商业环境实战...

    本套系列博客从真实商业环境抽取案例进行总结和分享,并给出Spark源码解读及商业实战指导,请持续关注本套博客.版权声明:本套Spark源码解读及商业实战归作者(秦凯新)所有,禁止转载,欢迎学习. Sp ...

  4. Kubernetes CRD开发模式及源码实现深入剖析-Kubernetes商业环境实战

    专注于大数据及容器云核心技术解密,可提供全栈的大数据+云原生平台咨询方案,请持续关注本套博客.如有任何学术交流,可随时联系.留言请关注<数据云技术社区>公众号. 1 CRD资源扩展 CRD ...

  5. 工业级大数据接入MQ消息发送异常性及最终一致性解决方案-DW商业环境实战

    版权声明:本套技术专栏是作者(秦凯新)平时工作的总结和升华,通过从真实商业环境抽取案例进行总结和分享,并给出商业应用的调优建议和集群环境容量规划等内容,请持续关注本套博客.QQ邮箱地址:1120746 ...

  6. 分布式协调组件ZooKeeper的技术理论剖析-综合组件环境实战

    本套技术专栏是作者(秦凯新)平时工作的总结和升华,通过从真实商业环境抽取案例进行总结和分享,并给出商业应用的调优建议和集群环境容量规划等内容,请持续关注本套博客.QQ邮箱地址:1120746959@q ...

  7. SparkSQL 之 Shuffle Join 内核原理及应用深度剖析-Spark商业源码实战

    本套技术专栏是作者(秦凯新)平时工作的总结和升华,通过从真实商业环境抽取案例进行总结和分享,并给出商业应用的调优建议和集群环境容量规划等内容,请持续关注本套博客.版权声明:禁止转载,欢迎学习.QQ邮箱 ...

  8. Redis内核原理及读写一致企业级架构深入剖析1-综合组件环境实战

    本套技术专栏是作者(秦凯新)平时工作的总结和升华,并深度整理大量网上资源和专业书籍.通过从真实商业环境抽取案例进行总结和分享,并给出商业应用的调优建议和集群环境容量规划等内容,请持续关注本套博客.QQ ...

  9. 带你了解 HBase 数据模型和 HBase 架构

    摘要:HBase 是一个面向列的 NoSQL 数据库. 本文分享自华为云社区<HBase 架构:HBase 数据模型 & HBase 读/写机制>,作者: Donglian Lin ...

最新文章

  1. PyCharm vs VSCode,是时候改变你的 IDE 了!
  2. Leetcode 79. 单词搜索 (每日一题 20210720 同类型题)
  3. oracle性能问题排查,性能测试Oracle消耗排查记录
  4. TCP/UDP的小事情
  5. pythonos基础_python基础之模块之os模块
  6. POJ 1753 Flip Game DFS枚举
  7. Angular里使用createEmbeddedView的单步调试
  8. SAP低代码开发(Low Code Development)解决方案的一些使用截图
  9. 前端学习(2961):前一天回顾
  10. Linux日常运维管理技巧(一)监控系统状态、监控网卡流量、监控IO性能、查看系统进程、查看网络状态、Linux下抓包tcpdump、Linux网络相关、DNS配置
  11. v-show在elementui中表格组件失效问题
  12. Linux 下 4 种实时监控日志文件的方法,你都会用吗?
  13. DirectX SDK 安装时出现错误 [Error Code:S1023] 的解决方案
  14. SpringBoot - Spring 家族的技术体系
  15. 威廉玛丽学院计算机专业好吗,威廉玛丽学院计算机专业怎么样?
  16. 用git clone命令从gitlab上拉取公司项目操作步骤
  17. 第八次前端培训(JavaScript)
  18. 【台达 PLC - 0】 - 电气基础
  19. php sec-websocket-accept,javascript – Websocket握手Sec-WebSocket-Accept标...
  20. 广州市番禺区2021-2022学年九年级第一学期期末考试英语试题

热门文章

  1. [Vue.js]实战 -- 电商项目(二)
  2. CSS3 移动端开发技巧
  3. react笔记-设计复合式控件(三)
  4. CSS3新增-属性(长度颜色背景)选择器-盒子模型
  5. 7-59 翻转单词顺序 (20 分)
  6. 力扣20-有效的括号(C++,附思路)
  7. 二叉树先序、中序和后序遍历
  8. mysql table as_Mysql中create table as与like命令的区别
  9. html语言怎样设置密码类型,html – 在使用contenteditable div时模仿密码类型输入
  10. (一)flask-sqlalchemy的安装和配置