34.Spark大型电商项目-用户访问session分析-session聚合统计之计算统计结果并写入MySQL

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/someby/article/details/88139839

目录

代码

SessionAggrStat.java

DAOFactory.java

ISessionAggrStatDAO.java

SessionAggrStatImpl.java

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);
    }

猜你喜欢

转载自blog.csdn.net/someby/article/details/88139839
今日推荐