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

相关文章

Mysql删除几亿条数据表中的部分数据的方法实现

《Mysql删除几亿条数据表中的部分数据的方法实现》在MySQL中删除一个大表中的数据时,需要特别注意操作的性能和对系统的影响,本文主要介绍了Mysql删除几亿条数据表中的部分数据的方法实现,具有一定... 目录1、需求2、方案1. 使用 DELETE 语句分批删除2. 使用 INPLACE ALTER T

找不到Anaconda prompt终端的原因分析及解决方案

《找不到Anacondaprompt终端的原因分析及解决方案》因为anaconda还没有初始化,在安装anaconda的过程中,有一行是否要添加anaconda到菜单目录中,由于没有勾选,导致没有菜... 目录问题原因问http://www.chinasem.cn题解决安装了 Anaconda 却找不到 An

Spring定时任务只执行一次的原因分析与解决方案

《Spring定时任务只执行一次的原因分析与解决方案》在使用Spring的@Scheduled定时任务时,你是否遇到过任务只执行一次,后续不再触发的情况?这种情况可能由多种原因导致,如未启用调度、线程... 目录1. 问题背景2. Spring定时任务的基本用法3. 为什么定时任务只执行一次?3.1 未启用

Python实战之屏幕录制功能的实现

《Python实战之屏幕录制功能的实现》屏幕录制,即屏幕捕获,是指将计算机屏幕上的活动记录下来,生成视频文件,本文主要为大家介绍了如何使用Python实现这一功能,希望对大家有所帮助... 目录屏幕录制原理图像捕获音频捕获编码压缩输出保存完整的屏幕录制工具高级功能实时预览增加水印多平台支持屏幕录制原理屏幕

C++ 各种map特点对比分析

《C++各种map特点对比分析》文章比较了C++中不同类型的map(如std::map,std::unordered_map,std::multimap,std::unordered_multima... 目录特点比较C++ 示例代码 ​​​​​​代码解释特点比较1. std::map底层实现:基于红黑

最新Spring Security实战教程之Spring Security安全框架指南

《最新SpringSecurity实战教程之SpringSecurity安全框架指南》SpringSecurity是Spring生态系统中的核心组件,提供认证、授权和防护机制,以保护应用免受各种安... 目录前言什么是Spring Security?同类框架对比Spring Security典型应用场景传统

最新Spring Security实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)

《最新SpringSecurity实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)》本章节介绍了如何通过SpringSecurity实现从配置自定义登录页面、表单登录处理逻辑的配置,并简单模拟... 目录前言改造准备开始登录页改造自定义用户名密码登陆成功失败跳转问题自定义登出前后端分离适配方案结语前言

OpenManus本地部署实战亲测有效完全免费(最新推荐)

《OpenManus本地部署实战亲测有效完全免费(最新推荐)》文章介绍了如何在本地部署OpenManus大语言模型,包括环境搭建、LLM编程接口配置和测试步骤,本文给大家讲解的非常详细,感兴趣的朋友一... 目录1.概况2.环境搭建2.1安装miniconda或者anaconda2.2 LLM编程接口配置2

Spring、Spring Boot、Spring Cloud 的区别与联系分析

《Spring、SpringBoot、SpringCloud的区别与联系分析》Spring、SpringBoot和SpringCloud是Java开发中常用的框架,分别针对企业级应用开发、快速开... 目录1. Spring 框架2. Spring Boot3. Spring Cloud总结1. Sprin

mysql删除无用用户的方法实现

《mysql删除无用用户的方法实现》本文主要介绍了mysql删除无用用户的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 1、删除不用的账户(1) 查看当前已存在账户mysql> select user,host,pa