spark 大型项目实战(五):用户访问session分析(五) --数据表设计

本文主要是介绍spark 大型项目实战(五):用户访问session分析(五) --数据表设计,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章地址:http://www.haha174.top/article/details/252047

本篇文章,是大数据项目开发流程的数据设计环节。在进行完了数据调研、需求分析、技术实现方案,进行数据设计。数据设计,往往包含两个环节,第一个呢,就是说,我们的上游数据,就是数据调研环节看到的项目基于的基础数据,是否要针对其开发一些Hive ETL,对数据进行进一步的处理和转换,从而让我们能够更加方便的和快速的去计算和执行spark作业;第二个,就是要设计spark作业要保存结果数据的业务表的结构,从而让J2EE平台可以使用业务表中的数据,来为使用者展示任务执行结果。在本项目中,我们所有的数据设计环节,只会涉及第二个,不会涉及第一个。因为我们为了突出课程重点,也就是spark。所以主要还是集中在spark上面,就不要花时间去做Hive ETL了。设计MySQL中的业务表的结构。第一表:session_aggr_stat表,存储第一个功能,session聚合统计的结果
CREATE TABLE `session_aggr_stat` (`task_id` int(11) NOT NULL,`session_count` int(11) DEFAULT NULL,`1s_3s` double DEFAULT NULL,`4s_6s` double DEFAULT NULL,`7s_9s` double DEFAULT NULL,`10s_30s` double DEFAULT NULL,`30s_60s` double DEFAULT NULL,`1m_3m` double DEFAULT NULL,`3m_10m` double DEFAULT NULL,`10m_30m` double DEFAULT NULL,`30m` double DEFAULT NULL,`1_3` double DEFAULT NULL,`4_6` double DEFAULT NULL,`7_9` double DEFAULT NULL,`10_30` double DEFAULT NULL,`30_60` double DEFAULT NULL,`60` double DEFAULT NULL,PRIMARY KEY (`task_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8第二个表:session_random_extract表,存储我们的按时间比例随机抽取功能抽取出来的1000个session
CREATE TABLE `session_random_extract` (`task_id` int(11) NOT NULL,`session_id` varchar(255) DEFAULT NULL,`start_time` varchar(50) DEFAULT NULL,`end_time` varchar(50) DEFAULT NULL,`search_keywords` varchar(255) DEFAULT NULL,PRIMARY KEY (`task_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8第三个表:top10_category表,存储按点击、下单和支付排序出来的top10品类数据
CREATE TABLE `top10_category` (`task_id` int(11) NOT NULL,`category_id` int(11) DEFAULT NULL,`click_count` int(11) DEFAULT NULL,`order_count` int(11) DEFAULT NULL,`pay_count` int(11) DEFAULT NULL,PRIMARY KEY (`task_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8第四个表:top10_category_session表,存储top10每个品类的点击top10的session
CREATE TABLE `top10_category_session` (`task_id` int(11) NO NULL,`category_id` int(11) DEFAULT NULL,`session_id` varchar(255) DEFAULT NULL,`click_count` int(11) DEFAULT NULL,PRIMARY KEY (`task_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8最后一张表:session_detail,用来存储随机抽取出来的session的明细数据、top10品类的session的明细数据
CREATE TABLE `session_detail` (`task_id` int(11) NOT NULL,`user_id` int(11) DEFAULT NULL,`session_id` varchar(255) DEFAULT NULL,`page_id` int(11) DEFAULT NULL,`action_time` varchar(255) DEFAULT NULL,`search_keyword` varchar(255) DEFAULT NULL,`click_category_id` int(11) DEFAULT NULL,`click_product_id` int(11) DEFAULT NULL,`order_category_ids` varchar(255) DEFAULT NULL,`order_product_ids` varchar(255) DEFAULT NULL,`pay_category_ids` varchar(255) DEFAULT NULL,`pay_product_ids` varchar(255) DEFAULT NULL,PRIMARY KEY (`task_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8额外的一张表:task表,用来存储J2EE平台插入其中的任务的信息
CREATE TABLE `task` (`task_id` int(11) NOT NULL AUTO_INCREMENT,`task_name` varchar(255) DEFAULT NULL,`create_time` varchar(255) DEFAULT NULL,`start_time` varchar(255) DEFAULT NULL,`finish_time` varchar(255) DEFAULT NULL,`task_type` varchar(255) DEFAULT NULL,`task_status` varchar(255) DEFAULT NULL,`task_param` text,PRIMARY KEY (`task_id`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8在数据设计以后,就正式进入一个漫长的环节,就是编码实现阶段,coding阶段。

欢迎关注,更多福利

这里写图片描述

这篇关于spark 大型项目实战(五):用户访问session分析(五) --数据表设计的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1097552

相关文章

PostgreSQL简介及实战应用

《PostgreSQL简介及实战应用》PostgreSQL是一种功能强大的开源关系型数据库管理系统,以其稳定性、高性能、扩展性和复杂查询能力在众多项目中得到广泛应用,本文将从基础概念讲起,逐步深入到高... 目录前言1. PostgreSQL基础1.1 PostgreSQL简介1.2 基础语法1.3 数据库

Python WebSockets 库从基础到实战使用举例

《PythonWebSockets库从基础到实战使用举例》WebSocket是一种全双工、持久化的网络通信协议,适用于需要低延迟的应用,如实时聊天、股票行情推送、在线协作、多人游戏等,本文给大家介... 目录1. 引言2. 为什么使用 WebSocket?3. 安装 WebSockets 库4. 使用 We

MySQL按时间维度对亿级数据表进行平滑分表

《MySQL按时间维度对亿级数据表进行平滑分表》本文将以一个真实的4亿数据表分表案例为基础,详细介绍如何在不影响线上业务的情况下,完成按时间维度分表的完整过程,感兴趣的小伙伴可以了解一下... 目录引言一、为什么我们需要分表1.1 单表数据量过大的问题1.2 分表方案选型二、分表前的准备工作2.1 数据评估

Spring Boot 整合 SSE(Server-Sent Events)实战案例(全网最全)

《SpringBoot整合SSE(Server-SentEvents)实战案例(全网最全)》本文通过实战案例讲解SpringBoot整合SSE技术,涵盖实现原理、代码配置、异常处理及前端交互,... 目录Spring Boot 整合 SSE(Server-Sent Events)1、简述SSE与其他技术的对

MyBatis-Plus 与 Spring Boot 集成原理实战示例

《MyBatis-Plus与SpringBoot集成原理实战示例》MyBatis-Plus通过自动配置与核心组件集成SpringBoot实现零配置,提供分页、逻辑删除等插件化功能,增强MyBa... 目录 一、MyBATis-Plus 简介 二、集成方式(Spring Boot)1. 引入依赖 三、核心机制

MySQL 数据库表操作完全指南:创建、读取、更新与删除实战

《MySQL数据库表操作完全指南:创建、读取、更新与删除实战》本文系统讲解MySQL表的增删查改(CURD)操作,涵盖创建、更新、查询、删除及插入查询结果,也是贯穿各类项目开发全流程的基础数据交互原... 目录mysql系列前言一、Create(创建)并插入数据1.1 单行数据 + 全列插入1.2 多行数据

MySQL 数据库表与查询操作实战案例

《MySQL数据库表与查询操作实战案例》本文将通过实际案例,详细介绍MySQL中数据库表的设计、数据插入以及常用的查询操作,帮助初学者快速上手,感兴趣的朋友跟随小编一起看看吧... 目录mysql 数据库表操作与查询实战案例项目一:产品相关数据库设计与创建一、数据库及表结构设计二、数据库与表的创建项目二:员

从基础到高阶详解Python多态实战应用指南

《从基础到高阶详解Python多态实战应用指南》这篇文章主要从基础到高阶为大家详细介绍Python中多态的相关应用与技巧,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、多态的本质:python的“鸭子类型”哲学二、多态的三大实战场景场景1:数据处理管道——统一处理不同数据格式

Android 缓存日志Logcat导出与分析最佳实践

《Android缓存日志Logcat导出与分析最佳实践》本文全面介绍AndroidLogcat缓存日志的导出与分析方法,涵盖按进程、缓冲区类型及日志级别过滤,自动化工具使用,常见问题解决方案和最佳实... 目录android 缓存日志(Logcat)导出与分析全攻略为什么要导出缓存日志?按需过滤导出1. 按

Java慢查询排查与性能调优完整实战指南

《Java慢查询排查与性能调优完整实战指南》Java调优是一个广泛的话题,它涵盖了代码优化、内存管理、并发处理等多个方面,:本文主要介绍Java慢查询排查与性能调优的相关资料,文中通过代码介绍的非... 目录1. 事故全景:从告警到定位1.1 事故时间线1.2 关键指标异常1.3 排查工具链2. 深度剖析: