package com.gmei import java.io.Serializable import com.gmei.WeafareStat.{defaultParams, parser} import org.apache.spark.sql.{SaveMode, TiContext} import org.apache.log4j.{Level, Logger} import scopt.OptionParser import com.gmei.lib.AbstractParams import java.io._ object temp_analysis { Logger.getLogger("org.apache.spark").setLevel(Level.WARN) Logger.getLogger("org.apache.eclipse.jetty.server").setLevel(Level.OFF) case class Params(env: String = "dev", date: String = "2018-08-01" ) extends AbstractParams[Params] with Serializable val defaultParams = Params() val parser = new OptionParser[Params]("Feed_EDA") { head("WeafareStat") opt[String]("env") .text(s"the databases environment you used") .action((x, c) => c.copy(env = x)) opt[String] ("date") .text(s"the date you used") .action((x,c) => c.copy(date = x)) note( """ |For example, the following command runs this app on a tidb dataset: | | spark-submit --class com.gmei.WeafareStat ./target/scala-2.11/feededa-assembly-0.1.jar \ """.stripMargin + s"| --env ${defaultParams.env}" ) } def main(args: Array[String]): Unit = { parser.parse(args, defaultParams).map { param => GmeiConfig.setup(param.env) val spark_env = GmeiConfig.getSparkSession() val sc = spark_env._2 val ti = new TiContext(sc) ti.tidbMapTable(dbName = "jerry_prod", tableName = "diary_video") ti.tidbMapTable(dbName = "jerry_prod", tableName = "data_feed_click") ti.tidbMapTable(dbName = "jerry_prod", tableName = "blacklist") ti.tidbMapTable(dbName = "jerry_test", tableName = "bl_device_list") ti.tidbMapTable(dbName = "jerry_prod", tableName = "data_feed_exposure") ti.tidbMapTable(dbName = "jerry_prod", tableName = "merge_queue_table") import sc.implicits._ val stat_date = GmeiConfig.getMinusNDate(1) //println(param.date) val partition_date = stat_date.replace("-","") val agency_id = sc.sql( s""" |SELECT DISTINCT(cl_id) as device_id |FROM online.ml_hospital_spam_pv_day |WHERE partition_date >= '20180402' |AND partition_date <= '20181203' |AND pv_ratio >= 0.95 |UNION ALL |SELECT DISTINCT(cl_id) as device_id |FROM online.ml_hospital_spam_pv_month |WHERE partition_date >= '20171101' |AND partition_date <= '20181203' |AND pv_ratio >= 0.95 """.stripMargin ) agency_id.createOrReplaceTempView("agency_id") // //每日新用户 // val device_id_newUser = sc.sql( // s""" // |select distinct(device_id) as device_id // |from online.ml_device_day_active_status // |where active_type != '4' // |and first_channel_source_type not in ('yqxiu1','yqxiu2','yqxiu3','yqxiu4','yqxiu5','mxyc1','mxyc2','mxyc3' // | ,'wanpu','jinshan','jx','maimai','zhuoyi','huatian','suopingjingling','mocha','mizhe','meika','lamabang' // | ,'js-az1','js-az2','js-az3','js-az4','js-az5','jfq-az1','jfq-az2','jfq-az3','jfq-az4','jfq-az5','toufang1' // | ,'toufang2','toufang3','toufang4','toufang5','toufang6','TF-toufang1','TF-toufang2','TF-toufang3','TF-toufang4' // | ,'TF-toufang5','tf-toufang1','tf-toufang2','tf-toufang3','tf-toufang4','tf-toufang5','benzhan','promotion_aso100' // | ,'promotion_qianka','promotion_xiaoyu','promotion_dianru','promotion_malioaso','promotion_malioaso-shequ' // | ,'promotion_shike','promotion_julang_jl03') // |and partition_date ='${partition_date}' // """.stripMargin // ) // device_id_newUser.createOrReplaceTempView("device_id_new") val blacklist_id = sc.sql( s""" |SELECT device_id |from blacklist """.stripMargin ) blacklist_id.createOrReplaceTempView("blacklist_id") val final_id = sc.sql( s""" |select device_id |from agency_id |UNION ALL |select device_id |from blacklist_id """.stripMargin ) final_id.createOrReplaceTempView("final_id") val diary_clk_all = sc.sql( s""" |select ov.partition_date,count(ov.cl_id) as clk_num,count(distinct(ov.cl_id)),count(ov.cl_id)/count(distinct(ov.cl_id)) |from online.tl_hdfs_maidian_view ov left join final_id |on ov.cl_id = final_id.device_id |where ov.action = "page_view" |and params['page_name']="diary_detail" |and ov.cl_id != "NULL" |and ov.partition_date >='20181201' |and final_id.device_id is null |group by ov.partition_date |order by ov.partition_date """.stripMargin ) diary_clk_all.show(80) //日记本点击 val referrer=List("about_me_message_list","all_case_service_comment","all_cases","diary_detail","diary_list" ,"diary_listof_related_service","answer_detail","community_home","conversation_detail","create_diary_title","diary_listof_related_service", "doctor_all_cases","hospital_all_cases","my_favor","my_order","order_detail","personal_store_diary_list","received_votes", "topic_detail","welfare_detail","welfare_list","welfare_special","wiki_detail","zone_detail", "expert_detail","free_activity_detail","home","message_home","my_diary","organization_detail","other_homepage","question_detail", "search_result_diary","search_result_more","welfare_detail","zone_v3") for( a <- referrer ){ val diary_clk_temp = sc.sql( s""" |select ov.partition_date,count(ov.cl_id) as clk_num,count(distinct(ov.cl_id)),count(ov.cl_id)/count(distinct(ov.cl_id)) |from online.tl_hdfs_maidian_view ov left join final_id |on ov.cl_id = final_id.device_id |where ov.action = "page_view" |and params['page_name']="diary_detail" |and params['referrer']='${a}' |and ov.cl_id != "NULL" |and ov.partition_date >='20181201' |and final_id.device_id is null |group by ov.partition_date |order by ov.partition_date """.stripMargin ) println("来源:",a) diary_clk_temp.show(80) } //5.登录人数 val log_device_temp = sc.sql( s""" |select oe.stat_date,count(distinct(oe.device_id)) as log_num |from data_feed_exposure oe left join final_id |on oe.device_id = final_id.device_id |and oe.stat_date >='2018-11-01' |and final_id.device_id is null |group by oe.stat_date |order by oe.stat_date """.stripMargin ) println("登录人数统计:") log_device_temp.show(80) } } }