zoukankan      html  css  js  c++  java
  • 18 友盟项目--统计---日活、周活、月活--创建表并插入选择出的数据

    定位分区-->with cube维度组合 -->  去null过滤 --->
     
    日活跃用户
    spark执行代码  ---  调用工具类
        执行sql工具类:ExecSQLUtil
    public class StatDayActJava{
        public static void main(String[] args) throw Exception{
            SparkConf conf = new SparkConf();
            conf.setAppName("statNew");
            conf.setMaster("local[4]");
            //spark链接
            SparkSession sess = SparkSession.builder().config(conf).enableHiveSupport().getOrCreate();
            //注册执函数
            ExecSQLUtil.execRegisterFuncs(sess);    
            //执行sql
            ExecSQLUtil.execSQLScript(sess, "stat_act_day.sql");
                }
    }
     
    日活跃量  sql语句 启动日志下appstartuplogs  
    stat_act_day.sql
    use big12_umeng ;
    create table if not exists stat_act_day(
      day string ,
      appid string,
      appplatform string,
      brand string ,
      devicestyle string,
      ostype string ,
      appversion string ,
      cnt int
    )
    ROW FORMAT DELIMITED
    FIELDS TERMINATED BY ','
    lines terminated by '
    ';
    
    insert overwrite table stat_act_day
    select
      formatbyday(-5, 'yyyyMMdd'),
      tt.appid ,
      tt.appplatform,
      tt.brand ,
      tt.devicestyle,
      tt.ostype ,
      tt.appversion ,
      count(tt.deviceid)
    FROM
    (
      select
        t.appid ,
        t.appplatform,
        t.brand ,
        t.devicestyle,
        t.ostype ,
        t.appversion ,
        t.deviceid
      FROM
      (
        select
          appid ,
          appplatform,
          brand ,
          devicestyle,
          ostype ,
          appversion ,
          deviceid
        from
          appstartuplogs
        WHERE
          concat(ym,day) = formatbyday(-5, 'yyyyMMdd')
        group BY
          appid ,
          appplatform,
          brand ,
          devicestyle,
          ostype ,
          appversion,
          deviceid
        with cube
      )t
      where
        t.appid is not null
        and t.deviceid is not null
    )tt
    group BY
      tt.appid ,
      tt.appplatform,
      tt.brand ,
      tt.devicestyle,
      tt.ostype ,
      tt.appversion
    order by
      tt.appid ,
      tt.appplatform,
      tt.brand ,
      tt.devicestyle,
      tt.ostype ,
      tt.appversion
    stat_act_day.sql 日活跃sql文件
    周活跃量---每天算本周活跃
    concat()  连接函数
    返回结果为连接参数产生的字符串
    stat_act_week.sql
    use big12_umeng ;
    create table if not exists stat_act_week(
      day string ,
      appid string,
      appplatform string,
      brand string ,
      devicestyle string,
      ostype string ,
      appversion string ,
      cnt int
    )
    ROW FORMAT DELIMITED
    FIELDS TERMINATED BY ','
    lines terminated by '
    ';
    
    insert overwrite table stat_act_week
    select
      formatbyday(-5, 'yyyyMMdd'),
      tt.appid ,
      tt.appplatform,
      tt.brand ,
      tt.devicestyle,
      tt.ostype ,
      tt.appversion ,
      count(tt.deviceid)
    FROM
    (
      select
        t.appid ,
        t.appplatform,
        t.brand ,
        t.devicestyle,
        t.ostype ,
        t.appversion ,
        t.deviceid
      FROM
      (
        select
          appid ,
          appplatform,
          brand ,
          devicestyle,
          ostype ,
          appversion ,
          deviceid
        from
          appstartuplogs
        WHERE
          formatbyweek(concat(ym,day) , 'yyyyMMdd' , 0 , 'yyyyMMdd') = formatbyweek(-1 , 'yyyyMMdd')
        group BY
          appid ,
          appplatform,
          brand ,
          devicestyle,
          ostype ,
          appversion,
          deviceid
        with cube
      )t
      where
        t.appid is not null
        and t.deviceid is not null
    )tt
    group BY
      tt.appid ,
      tt.appplatform,
      tt.brand ,
      tt.devicestyle,
      tt.ostype ,
      tt.appversion
    order by
      tt.appid ,
      tt.appplatform,
      tt.brand ,
      tt.devicestyle,
      tt.ostype ,
      tt.appversion
    stat_act_week 周活跃sql语句
    
    
    月活跃量
    stat_act_month.sql
     
    use big12_umeng ;
    create table if not exists stat_act_month(
      month string ,
      appid string,
      appplatform string,
      brand string ,
      devicestyle string,
      ostype string ,
      appversion string ,
      cnt int
    )
    ROW FORMAT DELIMITED
    FIELDS TERMINATED BY ','
    lines terminated by '
    ';
    
    insert into table stat_act_month
    select
      '${ym}' ,
      tt.appid ,
      tt.appplatform,
      tt.brand ,
      tt.devicestyle,
      tt.ostype ,
      tt.appversion ,
      count(tt.deviceid)
    FROM
    (
      select
        t.appid ,
        t.appplatform,
        t.brand ,
        t.devicestyle,
        t.ostype ,
        t.appversion ,
        t.deviceid
      FROM
      (
        select
          appid ,
          appplatform,
          brand ,
          devicestyle,
          ostype ,
          appversion ,
          deviceid
        from
          appstartuplogs
        WHERE
          ym = '${ym}'
        group BY
          appid ,
          appplatform,
          brand ,
          devicestyle,
          ostype ,
          appversion,
          deviceid
        with cube
      )t
      where
        t.appid is not null
        and t.deviceid is not null
    )tt
    group BY
      tt.appid ,
      tt.appplatform,
      tt.brand ,
      tt.devicestyle,
      tt.ostype ,
      tt.appversion
    order by
      tt.appid ,
      tt.appplatform,
      tt.brand ,
      tt.devicestyle,
      tt.ostype ,
      tt.appversion
    stat_act_month 月活跃sql语句
     
     
     
  • 相关阅读:
    Suricata, to 10Gbps and beyond(X86架构)
    golang语法学习(一):变量,常量以及数据类型
    Linux相关问题-CentOS6.5 x64版本号下Tomcat无法自启动的解决的方法
    软考之路--你存在我深深的脑海里
    Apache虚拟主机-解惑篇
    Apache 性能调优-参考篇
    Jmeter脚本录制
    整理LVS架构压力测试工作
    关于jboss的线程问题+java.lang.outofmemoryError
    CUDA入门
  • 原文地址:https://www.cnblogs.com/star521/p/9943486.html
Copyright © 2011-2022 走看看