Spark数据项目实例一

本文通过Spark实现了一个日志分析项目,包括数据清洗、用户留存、活跃用户、活跃用户地域和浏览深度分析。首先,从源数据中读取日志文件,进行数据清洗,去除无效记录,然后将清洗后的数据存入MySQL。接着,进行用户留存分析,计算次日留存率,为业务提供关键指标。
摘要由CSDN通过智能技术生成

源数据:https://pan.baidu.com/s/1rzEwBfR1m_lpZHekuEFnCg
提取码:tgpf
源码:https://pan.baidu.com/s/1mKiImFn3OePf5Jm8PIUi3Q
提取码:vxb7

使用Spark完成下列日志分析项目需求:

日志数据清洗
用户留存分析
活跃用户分析
活跃用户地域信息分析
用户浏览深度分析

数据清洗
1)读入日志文件并转化为RDD[Row]类型
按照Tab其人格数据
过滤掉字段数量少于8个的

val line1 = linesRDD.map(x => x.split("\t"))
val rdd = line1.filter(x => x.length == 8).map(x => Row(x(0).trim, x(1).trim, x(2).trim, x(3).trim, x(4).trim, x(5).trim, x(6).trim, x(7).trim))

2)对数据进行清洗
按照第一列和第二列对数据进行去重
过滤掉状态码非200
过滤掉event_time为空的数据
将url按照"&“以及”="切割

 val schema = StructType(
      Array(
        StructField("event_time", StringType),
        StructField("url", StringType),
        StructField("method", StringType),
        StructField("status", StringType),
        StructField("sip", StringType),
        StructField("user_uip", StringType),
        StructField("action_prepend", StringType),
        StructField("action_client", StringType)
      )
    )
    val orgDF = spark.createDataFrame(rdd, schema)
//    df1.printSchema()
//    df1.show(10,false)

    //按照第一列和第二列对数据数据去重,过滤掉状态码非200,过滤掉event_time为空的数据
    val ds1 = orgDF.dropDuplicates("event_time", "url")
      .filter(x => x(3) == "200")
      .filter(x => StringUtils.isNotEmpty(x(0).toString))

//    ds1.show(10,false)
    //将url按照"&"以及"="切割,即按照userUID
	//userSID
	//userUIP
	//actionClient
	//actionBegin
	//actionEnd
	//actionType
	//actionPrepend
	//actionTest
	//ifEquipment
	//actionName
	//id
	//progress进行切割
    val dfDetail = ds1
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值