Spark详解(05-1) - SparkCore实战案例

数据准备

1)数据格式

本项目的数据是采集电商网站的用户行为数据,主要包含用户的4种行为:搜索、点击、下单和支付。

(1)数据采用_分割字段

(2)每一行表示用户的一个行为,所以每一行只能是四种行为中的一种。

(3)如果点击的品类id和产品id是-1表示这次不是点击

(4)针对下单行为,一次可以下单多个产品,所以品类id和产品id都是多个,id之间使用逗号分割。

如果本次不是下单行为,则他们相关数据用null来表示。

(5)支付行为和下单行为格式类似

2)数据详细字段说明

编号

字段名称

字段类型

字段含义

1

date

String

用户点击行为的日期

2

user_id

Long

用户的ID

3

session_id

String

Session的ID

4

page_id

Long

某个页面的ID

5

action_time

String

动作的时间点

6

search_keyword

String

用户搜索的关键词

7

click_category_id

Long

点击某一个商品品类的ID

8

click_product_id

Long

某一个商品的ID

9

order_category_ids

String

一次订单中所有品类的ID集合

10

order_product_ids

String

一次订单中所有商品的ID集合

11

pay_category_ids

String

一次支付中所有品类的ID集合

12

pay_product_ids

String

一次支付中所有商品的ID集合

13

city_id

Long

城市 id

需求1:Top10热门品类

需求说明:品类是指产品的分类,大型电商网站品类分多级,本项目中品类只有一级,不同的公司可能对热门的定义不一样。按照每个品类的点击、下单、支付的量来统计热门品类。

鞋            点击数
下单数
支付数

衣服        点击数
下单数
支付数

电脑        点击数
下单数
支付数

例如,综合排名 = 点击数*20% + 下单数*30% + 支付数*50%

本项目需求优化为:先按照点击数排名,靠前的就排名高;如果点击数相同,再比较下单数;下单数再相同,就比较支付数。

需求分析(方案一)分步计算

思路:分别统计每个品类点击的次数,下单的次数和支付的次数。

(品类,点击总数)(品类,下单总数)(品类,支付总数)

缺点:统计3次,需要启动3个job,每个job都有对原始数据遍历一次,效率低。

需求分析(方案二)常规算子

采用常规算子的方式实现。

需求分析(方案三)样例类

采用样例类的方式实现。

需求实现(方案三)

1)用来封装用户行为的样例类

注意:样例类的属性默认是val修饰,不能修改;需要修改属性,需要采用var修饰。

2)核心业务代码实现

需求分析(方案四)样例类+算子优化

针对方案三中的groupBy,没有提前聚合的功能,替换成reduceByKey

需求实现(方案四)

1)样例类代码和方案三一样。(详见方案三)

2)核心代码实现

需求分析(方案五)累加器

需求实现(方案五)

1)累加器实现

2)核心逻辑实现

需求2:Top10热门品类中每个品类的Top10活跃Session统计

需求分析

需求实现

1)累加器实现

2)核心逻辑实现

需求3:页面单跳转化率统计

需求分析

1)页面单跳转化率

计算页面单跳转化率,什么是页面单跳转换率,比如一个用户在一次 Session 过程中访问的页面路径
3,5,7,9,10,21,那么页面
3
跳到页面
5
叫一次单跳,7-9
也叫一次单跳,那么单跳转化率就是要统计页面点击的概率。

比如:计算
3-5
的单跳转化率,先获取符合条件的
Session
对于页面 3 的访问次数(PV)为 A,然后获取符合条件的 Session 中访问了页面 3 又紧接着访问了页面 5 的次数为 B,那么 B/A 就是 3-5 的页面单跳转化率。

2)统计页面单跳转化率意义

产品经理和运营总监,可以根据这个指标,去尝试分析,整个网站,产品,各个页面的表现怎么样,是不是需要去优化产品的布局;吸引用户最终可以进入最后的支付页面。

数据分析师,可以此数据做更深一步的计算和分析。

企业管理层,可以看到整个公司的网站,各个页面的之间的跳转的表现如何,可以适当调整公司的经营战略或策略。

3)需求详细描述

在该模块中,需要根据查询对象中设置的Session过滤条件,先将对应得Session过滤出来,然后根据查询对象中设置的页面路径,计算页面单跳转化率,比如查询的页面路径为:3、5、7、8,那么就要计算3-5、5-7、7-8的页面单跳转化率。

需要注意的一点是,页面的访问是有先后的,要做好排序。

1、2、3、4、5、6、7

1-2/ 1 2-3/2 3-4/3 4-5/4 5-6/5 6-7/6

4)需求分析

用户行为数据采集模拟

需求实现

1)代码实现

Spark详解(05-1) - SparkCore实战案例的更多相关文章

  1. 【初级】linux rm 命令详解及使用方法实战

    rm:删除命令 前言: windows中的删除命令大家都不陌生,linux中的删除命令和windows中有一个共同特点,那就是危险,前两篇linux mkdir 命令详解及使用方法实战[初级]中我们就 ...

  2. 【初级】linux pwd 命令详解及使用方法实战

    pwd:查看当前工作目录 前言: Linux中用 pwd 命令来查看”当前工作目录“的完整路径,就是经常提及的所在目录,多用在生产环境多级目录中查看当前所在路径,使用此命令能给运维人员/操作人员带来很 ...

  3. 【初级】linux mkdir 命令详解及使用方法实战

    mkdir命令详解及使用方法实战 名称 MKDIR 是 make directories 的缩写 使用方法 mkdir [选项(如-p)] ...目录名称(及子目录注意用分隔符隔开)...    如使 ...

  4. Web协议详解与抓包实战,高效解决网络难题

    无论你是前后端工程师,还是运维测试,如果想面试更高的职位,或者要站在更高的角度去理解技术业务架构,并能在问题出现时快速.高效地解决问题,Web 协议一定是你绕不过去的一道坎. 旨在帮助你对各种常用 W ...

  5. Shiro 安全框架详解二(概念+权限案例实现)

    Shiro 安全框架详解二 总结内容 一.登录认证 二.Shiro 授权 1. 概念 2. 授权流程图 三.基于 ini 的授权认证案例实现 1. 实现原理图 2. 实现代码 2.1 添加 maven ...

  6. Shiro 安全框架详解一(概念+登录案例实现)

    shiro 安全框架详细教程 总结内容 一.RBAC 的概念 二.两种常用的权限管理框架 1. Apache Shiro 2. Spring Security 3. Shiro 和 Spring Se ...

  7. Spark详解

    原文连接 http://xiguada.org/spark/ Spark概述 当前,MapReduce编程模型已经成为主流的分布式编程模型,它极大地方便了编程人员在不会分布式并行编程的情况下,将自己的 ...

  8. java基础:数组详解以及应用,评委打分案例实现,数组和随机数综合,附练习案列

    1.数组 1.1 数组介绍 数组就是存储数据长度固定的容器,存储多个数据的数据类型要一致. 1.2 数组的定义格式 1.2.1 第一种格式 数据类型[] 数组名 示例: int[] arr;     ...

  9. 【初级】linux cp 命令详解及使用方法实战

    cp:复制文件或者目录 前言: cp命令用来复制文件或者目录,是Linux系统中最常用的命令之一.一般情况下,shell会设置一个别名,在命令行下复制文件时,如果目标文件已经存在,就会询问是否覆盖,不 ...

  10. 【初级】linux mv 命令详解及使用方法实战

    mv:移动文件或者将文件改名 前言: mv是move的缩写,顾名思义是移动.它的功能既能移动文件/文件夹,又可以用来改名,经常用来做文件的备份,比如再删除之前,先给文件做备份(保护数据)也是linux ...

随机推荐

  1. vscode markdown WYSIWYG 所见即所得编辑和预览

    一直使用Typora编写markdown,随着vscode在工作中使用的越来越多,产生了一个想法:能不能在vscode中写markdown,减少软件的成本? 可是vscode官方自带的的markdow ...

  2. [Thread] 多线程顺序执行

    Join 主线程join 启动线程t1,随后调用join,main线程需要等t1线程执行完毕后继续执行. public class MainJoin { static class MyThread i ...

  3. 驱动开发:内核枚举LoadImage映像回调

    在笔者之前的文章<驱动开发:内核特征码搜索函数封装>中我们封装实现了特征码定位功能,本章将继续使用该功能,本次我们需要枚举内核LoadImage映像回调,在Win64环境下我们可以设置一个 ...

  4. 基本的Dos命令 在控制台如何进入某一个文件或者进入不同的盘符

    基本的Dos命令 Windows+R 打开运行小窗口 cmd 进入 D: 切换盘符 dir 查看当前目录下的所有文件 cd 路径,进入某个文件 cd- 返回上一层 cls 清理屏幕 inconfig ...

  5. Linux学习记录---(1、基本命令)

    文章目录 1 .基本命令 1.1.查看当前文件夹下的文件 1.2.进入某一个文件夹 1.3.一次进入多个文件夹 1.4.返回上一级 1.5.直接进入根目录 1.6.创建一个目录 2.Redis中的相关 ...

  6. 知识图谱顶会论文(ACL-2022) ACL-SimKGC:基于PLM的简单对比KGC

    12.(2022.5.4)ACL-SimKGC:基于PLM的简单对比KGC 12.(2022.5.4)ACL-SimKGC:基于PLM的简单对比KGC 摘要 1.引言 2.相关工作 2.1 知识图补全 ...

  7. 1.Python面向对象基础

    面向对象(OOP) 面向对象编程--object oriented programming 简写 OOP   面向过程和面向对象的区别: 面向过程: 1.把完成某一个需求的所有步骤从头到尾逐步实现 2 ...

  8. xlwings 模块总结

    基本使用 在子线程中使用时,有时需要在子线程函数中加入以下.有时不需要加入,目前还不明白具体的原因 import pythoncom # 导入的库 pythoncom.CoInitialize() # ...

  9. SqlDataAdapter使用小结

    SqlDataAdapter是 DataSet与SQL Server之间的桥接器,用于相互之间的数据操作. 使用方法 1. 通过查询语句 与 SqlConnection对象实现 string strC ...

  10. 【网络】内网穿透方案&FRP内网穿透实战(基础版)

    目录 前言 方案 方案1:公网 方案2:第三方内网穿透软件 花生壳 cpolar 方案3:云服务器做反向代理 FRP简介 FRP资源 FRP原理 FRP配置教程之SSH 前期准备 服务器配置 下载FR ...