
Spark实战之电商用户行为分析
码动乾坤
求知若饥,虚心若愚
展开
-
大数据项目实战之六:6.工具类编写和说明
日期时间工具类import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;/** * 日期时间工具类 * @author Administrator * */public class DateUtils { public static final SimpleDat...原创 2018-11-29 00:00:51 · 231 阅读 · 0 评论 -
大数据实战项目之二:2.基础数据结构
user_visit_action表,比如说网站,或者是app,每天的点击流的数据。可以理解为,用户对网站/app每点击一下,就会代表在这个表里面的一条数据。表名:user_visit_action(Hive表)date:日期,代表这个用户点击行为是在哪一天发生的user_id:代表这个点击行为是哪一个用户执行的session_id :唯一标识了某个用户的一个访问sessionpage_...原创 2018-11-28 00:09:38 · 499 阅读 · 1 评论 -
大数据离线日志系统流程分析
1.我们的数据从哪里来? 互联网行业:网站,APP,系统(交易系统,管理系统...) 传统行业:电信,平时的上网,打电话,发短信等等数据一般的数据来源有网站和APP 当我们登录浏览一个网站或者APP的时候,都要往我们的后台去发送请求,获取数据,执行业务逻辑; APP获取要展现的商品数据,发送请求到后台进行处理 2.网站/app会发送请求到后台服务器,通常...原创 2018-11-26 20:30:53 · 2046 阅读 · 0 评论 -
大数据项目实时数据采集流程步骤分析
1.数据来源:比如,网站或者app。非常重要的一点,就是埋点。也就是说,埋点,在网站/app的哪个页面的哪些操作发生时,前端的代码(网站,JavaScript;app,android/IOS),就通过网络请求,(Ajax;socket),向后端的服务器发送指定格式的日志数据。2.Nginx,后台Web服务器(Tomcat、Jetty),后台系统(J2EE、PHP)。到这一步为止,其实还是可以跟...原创 2018-11-26 21:58:35 · 15510 阅读 · 2 评论 -
大数据项目实战之十一:11.工厂模式讲解以及DAOFactory开发
如果没有工厂模式,可能会出现的问题:ITaskDAO接口和TaskDAOImpl实现类;实现类是可能会更换的;那么,如果你就使用普通的方式来创建DAO,比如ITaskDAO taskDAO = new TaskDAOImpl(),那么后续,如果你的TaskDAO的实现类变更了,那么你就必须在你的程序中,所有出现过TaskDAOImpl的地方,去更换掉这个实现类。这是非常非常麻烦的。如果说,...原创 2018-12-01 11:40:48 · 479 阅读 · 0 评论 -
大数据项目实战之十二:12.JSON数据格式讲解以及fastjson介绍
什么是JSON?就是一种数据格式;比如说,我们现在规定,有一个txt文本文件,用来存放一个班级的成绩;这个文本文件里的学生成绩的格式,是第一行,就是一行列头(姓名 班级 年级 科目 成绩),接下来,每一行就是一个学生的成绩。那么,这个文本文件内的这种信息存放的格式,其实就是一种数据格式。学生 班级 年级 科目 成绩张三 一班 大一 高数 90李四 二班 大一 高数 80对应到JSO...原创 2018-12-01 11:57:18 · 322 阅读 · 0 评论 -
大数据项目实战之十三:13.Spark上下文构建以及模拟数据生成
import com.ibeifeng.sparkproject.conf.ConfigurationManager;import com.ibeifeng.sparkproject.constant.Constants;import com.ibeifeng.sparkproject.util.MockData;import org.apache.spark.SparkConf;...原创 2018-12-01 22:51:19 · 655 阅读 · 0 评论 -
大数据项目实战之十四:14.按筛选参数对session粒度聚合数据进行过滤
import com.alibaba.fastjson.JSONObject;import com.ibeifeng.sparkproject.conf.ConfigurationManager;import com.ibeifeng.sparkproject.constant.Constants;import com.ibeifeng.sparkproject.dao.ITaskDAO;...原创 2018-12-06 23:39:20 · 265 阅读 · 0 评论 -
大数据项目实战之十五:15.session聚合统计之自定义Accumulator
Accumulator传统的实现方式,有如下缺点:1.在写后面的累加代码的时候,比如找到了一个4s~6s的区间的session,但是在代码里面不小心累加到7s~9s里面去了;2.当后期项目出现一些逻辑上的变更,比如说,session数量的计算逻辑,要改变,就得更改所有Accumulator对应的代码;或者说,又要增加几个范围,那么又要增加多个Accumulator,并且修改对应的累加代码;...原创 2018-12-21 01:28:44 · 300 阅读 · 0 评论 -
大数据项目实战之五:5.数据库表设计
在进行完了数据调研、需求分析、技术实现方案,进行数据设计。数据设计,往往包含两个环节,第一个就是我们的上游数据,就是数据调研环节看到的项目基于的基础数据,是否要针对其开发一些Hive ETL,对数据进行进一步的处理和转换,从而让我们能够更加方便的和快速的去计算和执行spark作业;第二个,就是要设计spark作业要保存结果数据的业务表的结构,从而让J2EE平台可以使用业务表中的数据,来为使用者展示...原创 2018-11-28 00:10:04 · 3302 阅读 · 0 评论 -
大数据项目实战之三:3.需求分析
需求:1、按条件筛选session2、统计出符合条件的session中,访问时长在1s~3s、4s~6s、7s~9s、10s~30s、30s~60s、1m~3m、3m~10m、10m~30m、30m以上各个范围内的session占比;访问步长在1~3、4~6、7~9、10~30、30~60、60以上各个范围内的session占比3、在符合条件的session中,按照时间比例随机抽取1000...原创 2018-11-28 00:10:23 · 4897 阅读 · 0 评论 -
大数据项目实战之四:4.技术方案设计
需求:1、按条件筛选session2、聚合统计:统计出符合条件的session中,访问时长在1s~3s、4s~6s、7s~9s、10s~30s、30s~60s、1m~3m、3m~10m、10m~30m、30m以上各个范围内的session占比;访问步长在1~3、4~6、7~9、10~30、30~60、60以上各个范围内的session占比3、在符合条件的session中,按照时间比例随机抽...原创 2018-11-28 00:10:33 · 1601 阅读 · 0 评论 -
大数据项目实战之七:7.JDBC原理
1.Java程序/J2EE程序,当需要操作数据库,通常就是对数据库中某一个,或者某些表,进行增删改查那么就需要通过某些方式连接到数据库,比如MySQL,执行各种SQL语句(insert、select、udpate)2.JDBC,Java Database Connectivity,Java数据库连接技术。JDBC,其实只是代表了JDK提供的一套面向数据库的一套开发接口,注意,这里大部分...原创 2018-11-29 14:58:51 · 196 阅读 · 0 评论 -
单例设计模式
单例模式是指的什么意思? 我们自己定义的类,其实默认情况下,都是可以让外界的代码随意创建任意多个实例的 但是有些时候,我们不希望外界来随意创建实例,而只是希望一个类,在整个程序运行期间,只有一个实例,任何外界代码,都不能随意创建实例 那么,要实现单例模式,有几个要点: 1、如果不想让外界可以随意创建实例,那么类的构造方法就必须用private修饰,必须是私有的 2、既然类的...原创 2018-11-29 15:30:55 · 137 阅读 · 0 评论 -
数据库连接池原理
1.每一次java程序要在MySQL中执行一条SQL语句,那么就必须建立一个Connection对象,代表了与MySQL数据库的连接。然后在通过连接发送了你要执行的SQL语句之后,就会调用Connection.close()来关闭和销毁与数据库的连接。为什么要立即关闭呢?因为数据库的连接是一种很重的资源,代表了网络连接、IO等资源。所以如果不使用的话,就需要尽早关闭,以避免资源浪费。2.劣势/...原创 2018-11-29 15:31:54 · 216 阅读 · 1 评论 -
内部类以及匿名内部类
外部类: 最普通的,我们平时见到的那种类,就是在一个后缀为.java的文件中,直接定义的类,比如public class Student { private String name; private int age;}内部类:顾名思义,就是包含在外部类中的类,就叫做内部类。内部类有两种,一种是静态内部类,一种是非静态内部类。public class School { ...原创 2018-11-29 15:37:04 · 286 阅读 · 1 评论 -
大数据实战项目之一:1.对用户访问session进行分析
用户访问session介绍:用户在电商网站上,通常会有很多的点击行为,首页通常都是进入首页;然后可能点击首页上的一些商品;点击首页上的一些品类;也可能随时在搜索框里面搜索关键词;还可能将一些商品加入购物车;对购物车中的多个商品下订单;最后对订单中的多个商品进行支付。用户的每一次操作,其实可以理解为一个action,比如点击、搜索、下单、支付用户session,指的就是,从用户第一次进入...原创 2018-11-27 00:34:33 · 819 阅读 · 0 评论 -
大数据项目实战之八:8.JDBC组件开发
/** * JDBC辅助组件 * 在正式的项目的代码编写过程中,是完全严格按照大公司的coding标准来的 * 也就是说,在代码中,是不能出现任何hard code(硬编码)的字符 * 比如“张三”、“com.mysql.jdbc.Driver” * 所有这些东西,都需要通过常量来封装和使用 */public class JDBCHelper { // 第一步:在静态代码块...原创 2018-11-30 16:37:42 · 217 阅读 · 0 评论 -
大数据项目实战之九:9.JavaBean概念讲解
JavaBean:类JavaBean,虽然就是一个类,但是是有特殊条件的一个类,不是所有的类都可以叫做JavaBean的首先,它需要有一些field,这些field,都必须用private来修饰,表示所有的field,都是私有化的,不能随意的获取和设置其次,需要给所有的field,都提供对应的setter和getter方法,什么叫setter和getter?setter,就是说setX...原创 2018-11-30 17:13:42 · 239 阅读 · 0 评论 -
大数据项目实战之十:10.DAO模式讲解以及TaskDAO开发
Data Access Object:数据访问对象首先,你的应用程序,肯定会有业务逻辑的代码。在三层架构的web系统中,业务逻辑的代码,就是在你的Service组件里面;在我们的spark作业中,业务逻辑代码就是在我们的spark作业里面。如果说,你不用DAO模式的话,那么所有的数据库访问的代码和逻辑会全部耦合在业务逻辑代码里面。比如,你的业务逻辑代码中,可能会充斥着JDBCHelper,...原创 2018-11-30 18:13:55 · 311 阅读 · 0 评论 -
大数据项目实战之调优思路
session聚合统计之重构实现思路session聚合统计(统计出访问时长和访问步长,各个区间的session数量占总session数量的比例)的传统思路:1、actionRDD,映射成<sessionid,Row>的格式2、按sessionid聚合,计算出每个session的访问时长和访问步长,生成一个新的RDD3、遍历新生成的RDD,将每个session的访问时长和访问...原创 2018-12-22 21:06:00 · 544 阅读 · 0 评论