自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(46)
  • 问答 (1)
  • 收藏
  • 关注

转载 spark 大型项目实战(十五):用户访问session分析(十五) --按照session 粒度进行数据聚合

文章地址:http://www.haha174.top/article/details/253715 源码:https://github.com/haha174/spark-session.git 上一遍中通过代码构造出了测试的数据下面开始对该数据进行聚合 首先分析一下/** * * 接收用户创建的分析任务,用户可能指定的条件如下: * * 1、时间范围:起始日期~结束日期 *...

2018-05-31 22:20:30 3402

转载 spark 大型项目实战(十四):用户访问session分析(十四) --spark 上下文和构造测试数据

文章地址:http://www.haha174.top/article/details/251331一.构建上下文再生产环境和开发环境使用的spark 上下文肯定是不一样的比如说sqlContext 在生产用的hivecontext 在开发的时候就用的sqlcontext./** * 用户访问session分析Spark作业 * @author Administrato...

2018-05-29 22:06:57 3031

转载 spark 大型项目实战(十三):用户访问session分析(十三) --json 数据格式

什么是JSON?就是一种数据格式;比如说,我们现在规定,有一个txt文本文件,用来存放一个班级的成绩;然后呢,我们规定,这个文本文件里的学生成绩的格式,是第一行,就是一行列头(姓名 班级 年级 科目 成绩),接下来,每一行就是一个学生的成绩。那么,这个文本文件内的这种信息存放的格式,其实就是一种数据格式。学生 班级 年级 科目 成绩 张三 一班 大一 高数 90 李四 二班 大一 高数...

2018-05-25 07:12:03 2824

转载 spark 大型项目实战(十二):用户访问session分析(十二) --工厂模式讲解以及DAOFactory开发

如果没有工厂模式,可能会出现的问题:ITaskDAO接口和TaskDAOImpl实现类;实现类是可能会更换的;那么,如果你就使用普通的方式来创建DAO,比如ITaskDAO taskDAO = new TaskDAOImpl(),那么后续,如果你的TaskDAO的实现类变更了,那么你就必须在你的程序中,所有出现过TaskDAOImpl的地方,去更换掉这个实现类。这是非常非常麻烦的。如果说,...

2018-05-25 00:01:27 3181

原创 spark 大型项目实战(十一):用户访问session分析(十一) --使用注解进行字段转化

在之前开发的sessionFactory 中 如果字段的名称和数据库中字段名称不一致,是没有办法直接获取到值的,而且一直用map 操作也不是很方便,所以开发一个字段转换的注解进行数据库字段和model 中的字段进行映射。 首先创建一个注解/** * 数据库中字段一般和 model * 字段名称不一样 所以这里定义一个主机来转换名称 * 只需要将名称不一样的注解进行转换即...

2018-05-24 23:54:05 2824

转载 spark 大型项目实战(十):用户访问session分析(十) --DAO 模式讲解以及taskDAO 开发

一 简介 DAO模式 Data Access Object:数据访问对象首先,你的应用程序,肯定会有业务逻辑的代码。在三层架构的web系统中,业务逻辑的代码,就是在你的Service组件里面;在我们的spark作业中,业务逻辑代码就是在我们的spark作业里面。如果说,你不用DAO模式的话,那么所有的数据库访问的代码和逻辑会全部耦合在业务逻辑代码里面。比如,你的业务逻辑代码中,可能会充...

2018-05-24 23:07:26 2844

转载 Java设计模式之命令模式

本文继续介绍23种设计模式系列之命令模式。定义 将来自客户端的请求传入一个对象,从而使你可用不同的请求对客户进行参数化。用于“行为请求者”与“行为实现者”解耦,可实现二者之间的松耦合,以便适应变化。分离变化与不变的因素。角色 Command 定义命令的接口,声明执行的方法。 ConcreteCommand 命令接口实现对象,是“虚”的实现;通常会持有接收者,并调用接收者的功能来完...

2018-05-24 00:02:02 2669

转载 Java设计模式之责任链模式、职责链模式

本文继续介绍23种设计模式系列之职责链模式。什么是链 1、链是一系列节点的集合。 2.、链的各节点可灵活拆分再重组。职责链模式 使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系, 将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理他为止。角色 抽象处理者角色(Handler):定义出一个处理请求的接口。如果需要,接口可以定义 出一个方法以设...

2018-05-23 23:53:09 2707

转载 Java设计模式之状态模式

本文继续介绍23种设计模式系列之策略模式。何时使用 State模式在实际使用中比较多,适合“状态”的切换。因为我们经常会使用If else if else 进行状态切换,如果针对状态的这样判断切换反复出现,我们就要联想到是否可以采取State模式了。 这里要阐述的是”开关切换状态” 和” 一般的状态判断”是有一些区别的,” 一般的状态判断”也是有 if..elseif结构,例如:...

2018-05-23 23:52:53 2808

转载 Java设计模式之迭代子模式

本文继续介绍23种设计模式系列之迭代子模式。定义 在软件构建过程中,集合对象内部结构常常变化各异,但对于这些集合对象,我们希望在不暴露其内部结构的同时,可以让外部客户代码透明地访问其中包含的元素;同时这种“透明遍历”也为同一种算法在多种集合对象上进行操作提供了可能。 使用面向对象技术将这种遍历机制抽象为“迭代器对象”为“应对变化中的集合对象”提供了一种优雅的方式。 迭代子(Iterato...

2018-05-20 17:22:44 2808

转载 Java设计模式之观察者模式

本文继续介绍23种设计模式系列之观察者模式。观察者模式中,一个被观察者管理所有相依于它的观察者物件,并且在本身的状态改变时主动发出通知。这通常通过呼叫各观察者所提供的方法来实现。此种模式通常被用来实现事件处理系统。角色 抽象被观察者角色:把所有对观察者对象的引用保存在一个集合中,每个被观察者角色都可以有任意数量的观察者。被观察者提供一个接口,可以增加和删除观察者角色。一般用一个抽象类和接...

2018-05-20 17:16:09 2682

转载 Java设计模式之模板方法模式(Template Method)

本文继续介绍23种设计模式系列之模板方法模式。概述 模板方法模式是类的行为模式。准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。这就是模板方法模式的用意。 比如定义一个操作中的算法的骨架,将步骤延迟到子类中。模板方法使得子类能够不去改变一个算法的结构即可重...

2018-05-20 17:10:58 2693

转载 Java设计模式之策略模式

本文继续介绍23种设计模式系列之策略模式。背景 在软件开发中常常遇到这种情况,实现某一个功能有多种算法或者策略,我们可以根据环境或者条件的不同选择不同的算法或者策略来完成该功能。如查找、排序等,一种常用的方法是硬编码(Hard Coding)在一个类中,如需要提供多种查找算法,可以将这些算法写到一个类中,在该类中提供多个方法,每一个方法对应一个具体的查找算法;当然也可以将这些查找算法封装在一...

2018-05-20 17:08:48 2652

转载 JAVA设计模式之享元模式

解释一下概念:也就是说在一个系统中如果有多个相同的对象,那么只共享一份就可以了,不必每个都去实例化一个对象。比如说一个文本系统,每个字母定一个对象,那么大小写字母一共就是52个,那么就要定义52个对象package Flyweight;public abstract class Flyweight{ public abstract void operation();}p...

2018-05-20 16:58:40 2654

转载 JAVA设计模式初探之组合模式

先看看组合模式的定义吧:“将对象组合成树形结构以表示‘部分-整体’的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。”就拿剪发办卡的事情来分析一下吧。首先,一张卡可以在总部,分店,加盟店使用,那么总部可以刷卡,分店也可以刷卡,加盟店也可以刷卡,这个属性结构的店面层级关系就明确啦。那么,总店刷卡消费与分店刷卡消费是一样的道理,那么总店与分店对会员卡的使用也具有一致性。...

2018-05-20 16:48:20 2739

转载 Java设计模式之桥接模式

 桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。  这种模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类。这两种类型的类可被结构化改变而互不影响。  个人理解:桥接是一个接口,它与一方应该是绑定的,也就是解耦的双方中的一方必然是继承这个接口的,这一方就是实现方,...

2018-05-20 16:29:43 2746

转载 JAVA设计模式之门面模式(外观模式)

医院的例子  现代的软件系统都是比较复杂的,设计师处理复杂系统的一个常见方法便是将其“分而治之”,把一个系统划分为几个较小的子系统。如果把医院作为一个子系统,按照部门职能,这个系统可以划分为挂号、门诊、划价、化验、收费、取药等。看病的病人要与这些部门打交道,就如同一个子系统的客户端与一个子系统的各个类打交道一样,不是一件容易的事情。  首先病人必须先挂号,然后门诊。如果医生要求化验,病人必...

2018-05-20 16:09:47 2682

转载 JAVA设计模式之代理模式

【代理模式应用场景举例】比如在玩“极品飞车”这款游戏,如果游戏者手中的金钱达到了一定的数量就可以到车店买一部性能更高的赛车,那么这个卖车的“车店”就是一个典型的“汽车厂家”的“代理”,他为汽车厂家“提供卖车的服务”给有需求的人士。从面向对象的方面考虑,“销售汽车的代理”也是一个对象,那么这个对象也具有一定的状态,在软件项目中这个对象也具有管理财务进销存的基本功能,那么在设计时就要以面向OOP编...

2018-05-20 15:58:14 2653

转载 JAVA设计模式初探之装饰者模式

定义:动态给一个对象添加一些额外的职责,就象在墙上刷油漆.使用Decorator模式相比用生成子类方式达到功能的扩充显得更为灵活。 设计初衷:通常可以使用继承来实现功能的拓展,如果这些需要拓展的功能的种类很繁多,那么势必生成很多子类,增加系统的复杂性,同时,使用继承实现功能拓展,我们必须可预见这些拓展功能,这些功能是编译时就确定了,是静态的。要点: 装饰者与被装饰者拥有共同的超类,继承的目...

2018-05-20 15:52:25 2696

转载 JAVA设计模式初探之适配器模式

概述  将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。解决的问题  即Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。下面是两个非常形象的例子 模式中的角色  3.1 目标接口(Target):客户所期待的接口。目标可以是具体的或抽象的类,也可以是接口。  3.2 ...

2018-05-19 16:28:44 2689

转载 JAVA设计模式之原型模式

定义:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。类型:创建类模式类图: 原型模式主要用于对象的复制,它的核心是就是类图中的原型类Prototype。Prototype类需要具备以下两个条件:实现Cloneable接口。在java语言有一个Cloneable接口,它的作用只有一个,就是在运行时通知虚拟机可以安全地在实现了此接口的类上使用clone方法。在java...

2018-05-19 16:10:51 2723

转载 java设计模式之建造者模式

本文继续介绍23种设计模式系列之建造者模式。定义: 建造者模式:将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。实用范围 1、当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。 2、当构造过程必须允许被构造的对象有不同表示时。角色 在这样的设计模式中,有以下几个角色: 1、Builder:为创建一个产品对象的各个部件指定抽象接口。...

2018-05-19 16:04:32 2674

转载 JAVA设计模式之抽象工厂模式

本文继续介绍23种设计模式系列之抽象工厂模式。 前面已经介绍过简单工厂模式和工厂方法模式,这里继续介绍第三种工厂模式-抽象工厂模式,还是以汽车的制造为例。例子背景: 随着客户的要求越来越高,宝马车需要不同配置的空调和发动机等配件。于是这个工厂开始生产空调和发动机,用来组装汽车。这时候工厂有两个系列的产品:空调和发动机。宝马320系列配置A型号空调和A型号发动机,宝马230系列配置B型号空调...

2018-05-19 15:57:11 2648

转载 JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式)

一、简介在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的。但是在一些情况下, new操作符直接生成对象会带来一些问题。举例来说, 许多类型对象的创造需要一系列的步骤: 你可能需要计算或取得对象的初始设置; 选择生成哪个子对象实例; 或在生成你需要的对象之前必须先生成一些辅助功能的对象。 在这些情况,新对象的建立就是一个 “过程”,不仅是一个...

2018-05-19 15:52:14 2683

转载 JAVA设计模式之单例模式

一、概念:  java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍三种:懒汉式单例、饿汉式单例、登记式单例。   单例模式有以下特点:   1、单例类只能有一个实例。   2、单例类必须自己创建自己的唯一实例。   3、单例类必须给所有其他对象提供这一实例。   单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。在计算机系统中,线程池、缓...

2018-05-18 09:47:32 2654

转载 23种设计模式汇总整理

设计模式分为三大类: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。 其实还有两类:并发型模式和线程池模式。...

2018-05-18 09:44:11 2817

原创 spark 大型项目实战(九):用户访问session分析(九) --开发JDBC辅助组件(连接池)

项目源码:https://github.com/haha174/spark-session-project.git 在第八篇文章中介绍到了单例模式 首先我们使用单例模式创建一个连接池保存程序初始启动时获取的链接信息如下 // 为什么要实现代理化呢?因为它的内部要封装一个简单的内部的数据库连接池 // 为了保证数据库连接池有且仅有一份,所以就通过单例的方式 // 保证JDB...

2018-05-18 00:12:35 3085

转载 spark 大型项目实战(八):用户访问session分析(八) --单例模式

一、概念:  java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍三种:懒汉式单例、饿汉式单例、登记式单例。   单例模式有以下特点:   1、单例类只能有一个实例。   2、单例类必须自己创建自己的唯一实例。   3、单例类必须给所有其他对象提供这一实例。   单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。在计算机系统中,线程池、缓...

2018-05-14 11:20:54 3072

转载 spark 大型项目实战(七):用户访问session分析(七) --数据库连接池原理

1.谈谈数据库连接池的原理这次我们采取技术演进的方式来谈谈数据库连接池的技术出现过程及其原理,以及当下最流行的开源数据库连接池jar包。一.早期我们怎么进行数据库操作 1.原理:一般来说,java应用程序访问数据库的过程是:  ①装载数据库驱动程序;  ②通过jdbc建立数据库连接;  ③访问数据库,执行sql语句;  ④断开数据库连接。2.代码 ...

2018-05-13 23:29:58 3124

转载 spark 大型项目实战(六):用户访问session分析(六) --开发配置管理组件

1.简述配置管理组件 * * 1、配置管理组件可以复杂,也可以很简单,对于简单的配置管理组件来说,只要开发一个类,可以在第一次访问它的 * 时候,就从对应的properties文件中,读取配置项,并提供外界获取某个配置key对应的value的方法 * 2、如果是特别复杂的配置管理组件,那么可能需要使用一些软件设计中的设计模式,比如单例模式、解释器模式 * ...

2018-05-13 18:33:52 2855

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

本篇文章,是大数据项目开发流程的数据设计环节。在进行完了数据调研、需求分析、技术实现方案,进行数据设计。数据设计,往往包含两个环节,第一个呢,就是说,我们的上游数据,就是数据调研环节看到的项目基于的基础数据,是否要针对其开发一些Hive ETL,对数据进行进一步的处理和转换,从而让我们能够更加方便的和快速的去计算和执行spark作业;第二个,就是要设计spark作业要保存结果数据的业务表的结构,从...

2018-05-12 18:17:53 2879

转载 spark 大型项目实战(四):用户访问session分析(四) --简要技术方法的设计

1、按条件筛选session 2、聚合统计:统计出符合条件的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中,按照时间比例随机抽取10...

2018-05-12 18:09:31 3496

转载 spark 大型项目实战(三):用户访问session分析(三) --简要需求分析

本篇文章主要简要的介绍此次项目实战的需求分析 1、按条件筛选session 2、统计出符合条件的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、在符合条件的se...

2018-05-12 17:47:31 3100

转载 spark 大型项目实战(二):用户访问session分析(二) --基础数据结构以及平台架构介绍

1.此次实战项目中所用到的表结构以及字段含义的介绍表名:user_visit_action(Hive表)date:日期,代表这个用户点击行为是在哪一天发生的user_id:代表这个点击行为是哪一个用户执行的session_id :唯一标识了某个用户的一个访问sessionpage_id :点击了某些商品/品类,也可能是搜索了某个关键词,然后进入了某个页面,页面的idaction_ti...

2018-05-12 17:37:15 3320

转载 spark 大型项目实战(一):用户访问session分析(1) --模块介绍

模块的目标:对用户访问的session 进行分析 1、可以根据使用者指定的某些条件,筛选出指定的一些用户(有特定年龄、职业、城市); 2、对这些用户在指定日期范围内发起的session,进行聚合统计,比如,统计出访问时长在0~3s的session占总session数量的比例; 3、按时间比例,比如一天有24个小时,其中12:00~13:00的session数量占当天总session数量的5...

2018-05-12 17:26:07 3665

原创 LeetCode:Letter Combinations of a Phone Number

LeetCode:Letter Combinations of a Phone NumberGiven a string containing digits from 2-9 inclusive, return all possible letter combinations that the number could represent.A mapping of digit to letters (just l

2018-05-09 18:30:43 2730

原创 spark从入门到放弃五十四:Spark Streaming(14)checkpoint

1.概述每一个spark streaming 应用正常来说都要7*24小时运转的,这就是实时计算程序的特点。因为要持续不断的对数据进行计算。因此,对实时计算的要求,应该是必须能够与应用程序逻辑无关的失败,进行容错。 如果要实现这个目标,spark streaming 程序就必须将足够的信息checkpoint 到容错的存储系统上,从而让他能够从失败中进行恢复。有两种数据需要进行chec

2018-05-08 22:15:42 2783

原创 spark从入门到放弃五十三:Spark Streaming(13)缓存于持久化

与RDD 类似,spark Streaming 也可以让开发人员手动控制,将数据流中的数据持久化到内存中。对DStream 调用persist ( ) 方法,就可以让spark Streaming 自动将该数据流中的所有产生的RDD 都持久化到内存中。如果要对于一个DStream 多次执行操作,那么对DStream 持久化是非常有用的。因为多次操作,可以共享一份数据。 对于基于窗

2018-05-07 23:58:56 3838

原创 spark从入门到放弃五十二:Spark Streaming(12)结合spark Sql

spark从入门到放弃五十二:Spark Streaming(12)结合spark Sql

2018-05-06 21:17:35 3199

原创 spark从入门到放弃五十一:Spark Streaming(11)window 滑动窗口

1. 简介Spark Streaming 提供了滑动窗口的操作的支持,从而让我们可以对一个滑动窗口内的数据执行计算操作。每次落在窗口里面的RDD 数据,会被集合起来,然后生成新的RDD 会作为windows DStream 的一个RDD ,例如对每三秒钟执行一次滑动窗口计算。所以每个滑动窗口的操作,都必须只当两个参数,窗口的长度,以及滑动间隔,而且这两个参数都必须是batch 间隔的整

2018-05-06 19:50:32 6017

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除