版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/someby/article/details/88139839
目录
UserVisitSessionAnalyzeSpark.java
本篇文章将介绍用户访问session分析-session聚合统计之计算统计结果并写入MySQL。
代码
SessionAggrStat.java
package main.xxx.java.domain; /** * FileName: SessionAggrStat * Author: hadoop * Email: [email protected] * Date: 19-3-4 下午7:29 * Description: * session聚合统计 */ public class SessionAggrStat { private long taskid; private long session_count; private double visit_length_1s_3s_ratio; private double visit_length_4s_6s_ratio; private double visit_length_7s_9s_ratio; private double visit_length_10s_30s_ratio; private double visit_length_30s_60s_ratio; private double visit_length_1m_3m_ratio; private double visit_length_3m_10m_ratio; private double visit_length_10m_30m_ratio; private double visit_length_30m_ratio; private double step_length_1_3_ratio; private double step_length_4_6_ratio; private double step_length_7_9_ratio; private double step_length_10_30_ratio; private double step_length_30_60_ratio; private double step_length_60_ratio; public long getTaskid() { return taskid; } public void setTaskid(long taskid) { this.taskid = taskid; } public long getSession_count() { return session_count; } public void setSession_count(long session_count) { this.session_count = session_count; } public double getVisit_length_1s_3s_ratio() { return visit_length_1s_3s_ratio; } public void setVisit_length_1s_3s_ratio(double visit_length_1s_3s_ratio) { this.visit_length_1s_3s_ratio = visit_length_1s_3s_ratio; } public double getVisit_length_4s_6s_ratio() { return visit_length_4s_6s_ratio; } public void setVisit_length_4s_6s_ratio(double visit_length_4s_6s_ratio) { this.visit_length_4s_6s_ratio = visit_length_4s_6s_ratio; } public double getVisit_length_7s_9s_ratio() { return visit_length_7s_9s_ratio; } public void setVisit_length_7s_9s_ratio(double visit_length_7s_9s_ratio) { this.visit_length_7s_9s_ratio = visit_length_7s_9s_ratio; } public double getVisit_length_10s_30s_ratio() { return visit_length_10s_30s_ratio; } public void setVisit_length_10s_30s_ratio(double visit_length_10s_30s_ratio) { this.visit_length_10s_30s_ratio = visit_length_10s_30s_ratio; } public double getVisit_length_30s_60s_ratio() { return visit_length_30s_60s_ratio; } public void setVisit_length_30s_60s_ratio(double visit_length_30s_60s_ratio) { this.visit_length_30s_60s_ratio = visit_length_30s_60s_ratio; } public double getVisit_length_1m_3m_ratio() { return visit_length_1m_3m_ratio; } public void setVisit_length_1m_3m_ratio(double visit_length_1m_3m_ratio) { this.visit_length_1m_3m_ratio = visit_length_1m_3m_ratio; } public double getVisit_length_3m_10m_ratio() { return visit_length_3m_10m_ratio; } public void setVisit_length_3m_10m_ratio(double visit_length_3m_10m_ratio) { this.visit_length_3m_10m_ratio = visit_length_3m_10m_ratio; } public double getVisit_length_10m_30m_ratio() { return visit_length_10m_30m_ratio; } public void setVisit_length_10m_30m_ratio(double visit_length_10m_30m_ratio) { this.visit_length_10m_30m_ratio = visit_length_10m_30m_ratio; } public double getVisit_length_30m_ratio() { return visit_length_30m_ratio; } public void setVisit_length_30m_ratio(double visit_length_30m_ratio) { this.visit_length_30m_ratio = visit_length_30m_ratio; } public double getStep_length_1_3_ratio() { return step_length_1_3_ratio; } public void setStep_length_1_3_ratio(double step_length_1_3_ratio) { this.step_length_1_3_ratio = step_length_1_3_ratio; } public double getStep_length_4_6_ratio() { return step_length_4_6_ratio; } public void setStep_length_4_6_ratio(double step_length_4_6_ratio) { this.step_length_4_6_ratio = step_length_4_6_ratio; } public double getStep_length_7_9_ratio() { return step_length_7_9_ratio; } public void setStep_length_7_9_ratio(double step_length_7_9_ratio) { this.step_length_7_9_ratio = step_length_7_9_ratio; } public double getStep_length_10_30_ratio() { return step_length_10_30_ratio; } public void setStep_length_10_30_ratio(double step_length_10_30_ratio) { this.step_length_10_30_ratio = step_length_10_30_ratio; } public double getStep_length_30_60_ratio() { return step_length_30_60_ratio; } public void setStep_length_30_60_ratio(double step_length_30_60_ratio) { this.step_length_30_60_ratio = step_length_30_60_ratio; } public double getStep_length_60_ratio() { return step_length_60_ratio; } public void setStep_length_60_ratio(double step_length_60_ratio) { this.step_length_60_ratio = step_length_60_ratio; } }
DAOFactory.java
/** * 获取页面统计时长和步长管理DAO * @return */ public static ISessionAggrStatDAO getSessionAggrStatDAO(){ return new SessionAggrStatDAOImpl(); } }
ISessionAggrStatDAO.java
package main.xxx.java.dao; import main.xxx.java.domain.SessionAggrStat; /** * FileName: ISessionAggrStatDAO * Author: hadoop * Email: [email protected] * Date: 19-3-4 下午5:28 * Description: * session聚合统计模块DAO接口 */ public interface ISessionAggrStatDAO { /** * 插入session聚合统计结果 * @param sessionAggrStat */ void insert(SessionAggrStat sessionAggrStat); }
SessionAggrStatImpl.java
package main.xxx.java.impl; import main.xxx.java.dao.ISessionAggrStatDAO; import main.xxx.java.domain.SessionAggrStat; import main.xxx.java.jdbc.JDBCHelper; /** * FileName: SessionAggrStatDAOImpl * Author: hadoop * Email: [email protected] * Date: 19-3-4 下午7:35 * Description: * session聚合统计DAO实现类 */ public class SessionAggrStatDAOImpl implements ISessionAggrStatDAO { public void insert(SessionAggrStat sessionAggrStat){ String sql = "insert into session_aggr_stat " +"values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; Object[] params = new Object[]{ sessionAggrStat.getTaskid(), sessionAggrStat.getSession_count(), sessionAggrStat.getVisit_length_1s_3s_ratio(), sessionAggrStat.getVisit_length_4s_6s_ratio(), sessionAggrStat.getVisit_length_7s_9s_ratio(), sessionAggrStat.getVisit_length_10s_30s_ratio(), sessionAggrStat.getVisit_length_30s_60s_ratio(), sessionAggrStat.getVisit_length_30m_ratio(), sessionAggrStat.getStep_length_1_3_ratio(), sessionAggrStat.getStep_length_4_6_ratio(), sessionAggrStat.getStep_length_7_9_ratio(), sessionAggrStat.getStep_length_10_30_ratio(), sessionAggrStat.getStep_length_30_60_ratio(), sessionAggrStat.getStep_length_60_ratio() }; JDBCHelper jdbcHelper = JDBCHelper.getInstance(); jdbcHelper.executeUpdate(sql,params); } }
UserVisitSessionAnalyzeSpark.java
/** * 计算各session范围占比,并写入MySQL * @param value * @param taskId */ private static void calculateAndPersistAggrStat(String value, long taskId) { //从Accumulate统计串中获取值 long session_count = Long.valueOf(StringUtils.getFieldFromConcatString(value,"\\|",Constants.SESSION_COUNT)); long visit_length_1s_3s = Long.valueOf(StringUtils.getFieldFromConcatString(value,"\\|",Constants.TIME_PERIOD_1s_3s)); long visit_length_4s_6s = Long.valueOf(StringUtils.getFieldFromConcatString(value,"\\|",Constants.TIME_PERIOD_4s_6s)); long visit_length_7s_9s = Long.valueOf(StringUtils.getFieldFromConcatString(value,"\\|",Constants.TIME_PERIOD_7s_9s)); long visit_length_10s_30s = Long.valueOf(StringUtils.getFieldFromConcatString(value,"\\|",Constants.TIME_PERIOD_10s_30s)); long visit_length_30s_60s = Long.valueOf(StringUtils.getFieldFromConcatString(value,"\\|",Constants.TIME_PERIOD_30s_60s)); long visit_length_1m_3m = Long.valueOf(StringUtils.getFieldFromConcatString(value,"\\|",Constants.TIME_PERIOD_1m_3m)); long visit_length_3m_10m = Long.valueOf(StringUtils.getFieldFromConcatString(value,"\\|",Constants.TIME_PERIOD_3m_10m)); long visit_length_10m_30m = Long.valueOf(StringUtils.getFieldFromConcatString(value,"\\|",Constants.TIME_PERIOD_10m_30m)); long visit_length_30m = Long.valueOf(StringUtils.getFieldFromConcatString(value,"\\|",Constants.TIME_PERIOD_30m)); long step_length_1_3 = Long.valueOf(StringUtils.getFieldFromConcatString(value,"\\|",Constants.STEP_PERIOD_1_3)); long step_length_4_6 = Long.valueOf(StringUtils.getFieldFromConcatString(value,"\\|",Constants.STEP_PERIOD_4_6)); long step_length_7_9 = Long.valueOf(StringUtils.getFieldFromConcatString(value,"\\|",Constants.STEP_PERIOD_7_9)); long step_length_10_30 = Long.valueOf(StringUtils.getFieldFromConcatString(value,"\\|",Constants.STEP_PERIOD_10_30)); long step_length_30_60 = Long.valueOf(StringUtils.getFieldFromConcatString(value,"\\|",Constants.STEP_PERIOD_30_60)); long step_length_60 = Long.valueOf(StringUtils.getFieldFromConcatString(value,"\\|",Constants.STEP_PERIOD_60)); //计算各个访问时长和步长的占比 double visit_length_1s_3s_ratio = NumberUtils.formatDouble(visit_length_1s_3s/session_count,2); double visit_length_4s_6s_ratio = NumberUtils.formatDouble(visit_length_4s_6s/session_count,2); double visit_length_7s_9s_ratio = NumberUtils.formatDouble(visit_length_7s_9s/session_count,2); double visit_length_10s_30s_ratio = NumberUtils.formatDouble(visit_length_10s_30s/session_count,2); double visit_length_30s_60s_ratio = NumberUtils.formatDouble(visit_length_30s_60s/session_count,2); double visit_length_1m_3m_ratio = NumberUtils.formatDouble(visit_length_1m_3m/session_count,2); double visit_length_3m_10m_ratio = NumberUtils.formatDouble(visit_length_3m_10m/session_count,2); double visit_length_10m_30m_ratio = NumberUtils.formatDouble(visit_length_10m_30m/session_count,2); double visit_length_30m_ratio = NumberUtils.formatDouble(visit_length_30m/session_count,2); double step_length_1_3_ratio = NumberUtils.formatDouble(step_length_1_3/session_count,2); double step_length_4_6_ratio = NumberUtils.formatDouble(step_length_4_6/session_count,2); double step_length_7_9_ratio = NumberUtils.formatDouble(step_length_7_9/session_count,2); double step_length_10_30_ratio = NumberUtils.formatDouble(step_length_10_30/session_count,2); double step_length_30_60_ratio = NumberUtils.formatDouble(step_length_30_60/session_count,2); double step_length_60_ratio = NumberUtils.formatDouble(step_length_60/session_count,2); // 将统计封装为Domain对象 SessionAggrStat sessionAggrStat = new SessionAggrStat(); sessionAggrStat.setSession_count(session_count); sessionAggrStat.setTaskid(taskId); sessionAggrStat.setVisit_length_1s_3s_ratio(visit_length_1s_3s_ratio); sessionAggrStat.setVisit_length_4s_6s_ratio(visit_length_4s_6s_ratio); sessionAggrStat.setVisit_length_7s_9s_ratio(visit_length_7s_9s_ratio); sessionAggrStat.setVisit_length_10s_30s_ratio(visit_length_10s_30s_ratio); sessionAggrStat.setVisit_length_30s_60s_ratio(visit_length_30s_60s_ratio); sessionAggrStat.setVisit_length_1m_3m_ratio(visit_length_1m_3m_ratio); sessionAggrStat.setVisit_length_3m_10m_ratio(visit_length_3m_10m_ratio); sessionAggrStat.setVisit_length_10m_30m_ratio(visit_length_10m_30m_ratio); sessionAggrStat.setVisit_length_30m_ratio(visit_length_30m_ratio); sessionAggrStat.setStep_length_1_3_ratio(step_length_1_3_ratio); sessionAggrStat.setStep_length_4_6_ratio(step_length_4_6_ratio); sessionAggrStat.setStep_length_7_9_ratio(step_length_7_9_ratio); sessionAggrStat.setStep_length_10_30_ratio(step_length_10_30_ratio); sessionAggrStat.setStep_length_30_60_ratio(step_length_30_60_ratio); sessionAggrStat.setStep_length_60_ratio(step_length_60_ratio); ISessionAggrStatDAO sessionAggrStatDAO = DAOFactory.getSessionAggrStatDAO(); sessionAggrStatDAO.insert(sessionAggrStat); }