数据库
首页 > 数据库> > SparkSql分析法律服务网站数据

SparkSql分析法律服务网站数据

作者:互联网

当用户访问网站页面时,系统会记录用户访问网站的日志,其中记录了用户 IP 、用用 户 访问的时间、用访问内容等多项属性的信息,

各个属性的说明如表所示

数据准备

1 、用创建数据库 law

2 、用在 law 数据库下创建 law 表

3 、用将数据导入到 law 表

 数据统计分析

1 、用网页类型统计 - 根据网页类型分组统计       网页类型是指 page_type 中的前 3 位数字,统计每个网页类型对应的数目

2 、用网页中带有?记录的统计及各类别占比 - 根据网页类型分组统计       统计 visiturl 字段包含 ?,    占比是各类统计数与总数运算,保留四位小数

3 、用点击次数分析 - 根据点击次数分组       统计内容位点击次数、用用户数、用用户百分比,记录百分比       定义字段 click_num 为点击数,注意点击数是每个用户的访问记录

4 、用网页排名分析 - 根据 visiturl 字段分组统计       统计字段 visiturl 中包含 .htmlhtml , 各网页的点击数,进行排序

代码:

package org.hnsw

import org.apache.spark.sql.SparkSession
import org.apache.spark.sql.functions._

object DFPractice {
  def main(args: Array[String]): Unit = {
    //初始化sparksession
    val sparkSql = SparkSession.builder().appName("JXQ").master("local")
      .enableHiveSupport().getOrCreate()
    sparkSql.sql("use law")
    sparkSql.sql("select count(1) from law").show() //总计路数
    // 1、网页类型统计 (网页类型,记录数,百分比 page_type字段取前3字符 ) (substring(page_type,1,3)))
    sparkSql.sql("select substring(page_type,1,3) as page_type,count(*) as count,round(count(*)*100/17139,2) as bfb from law where page_type is not null group by substring(page_type,1,3)").show()
    // 2、 网页中带有?记录的统计及各类别占比 (网页类型,记录数,百分比) 网页字段 visiturl
    //1)求得 visiturl 带有?的总记录数
    sparkSql.sql("select count(1) from law where  visiturl like '%?%'").show()
    //2)基于网页类型分组 统计 (网页类型,记录数,百分比)
    sparkSql.sql("select substring(page_type,1,3) as page_type,count(*) as count,round(count(*)*100/17139,2) as bfb from law where page_type is not null and visiturl like '%?%' group by substring(page_type,1,3)").show()
    // 3、点击次数分析 () 点击次数,用户数,用户百分比,记录百分比
    //统计相同点击次数的用户数
    //1)总记录数
    sparkSql.sql("select count(1) from law").show()
    //2)用户总数
    sparkSql.sql("select count(distinct(userid)) as user_num from law").show()
    //3)求每个用户点击次数
    sparkSql.sql("select count(userid) as click_num,userid from law group by userid order by click_num desc" ).createOrReplaceTempView("temp_table")
    //构建临时表
    sparkSql.sql("select click_num,count(userid) as user_count,round(count(userid)*100/4041,2) as userbfb, round(count(userid)*click_num*100/17138,2) as bfb from temp_table group by click_num").show(100)
    // 4、网页排名分析(网址,点击次数) 过滤包含.html的字段网页
    sparkSql.sql("select visiturl, count(*) as count from law where visiturl like '%.html%' group by visiturl order by count desc").show()

  }

}

演示

标签:count,网页,网站,SparkSql,法律,sql,law,page,sparkSql
来源: https://www.cnblogs.com/857weir09432/p/16280511.html