开发者学堂课程【大数据实战项目 - 反爬虫系统(Lua+Spark+Redis+Hadoop框架搭建)第七阶段:离线计算-国内查询转换率】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/675/detail/11740
离线计算-国内查询转换率
内容简介:
一、国内查询转换率计算公式
二、计算国内查询转换率
三、将计算出来的数据追加到数据库
一、国内查询转换率计算公式
计算公式:国内查询转换率=添加乘客信息量÷浏览的总量
浏览的总量除以浏览的总量添加乘客信息,多少个人添加,然后再加上浏览的总量,算出来的就是查询的转化率
比如说,有100个人查询,但是有50个人添加乘客信息,100个人浏览50个人添加乘客信息,那这50个人就是我的转化率,50%
二、计算国内查询转换率
(1)、在 request1-transformed 表中过滤出是国内的操作
(2)、在上面数据的基础上过滤出 StageTag=2÷在上面数据的基础上过滤出 StageTag=1
代码
val NatinalRate-1=
request1-transformed.filter(request1-transformed(“flightType”).equalTo(other=”National”)).filter(request1-transformed(“StageTag”).equalTo(other=”National”)).filter(request1-transformed(“StageTag”).equalTo(other=”2”)).count().toFloat/request1.filter(request1(“flightType”).equalTo(other=”National”)).filter(request1(“StageTag”).equalTo(other=”1”))
p
rintln(NatinalRate-1)
查出国内的转化数据,后再去算转化率,就是等于2的数据除以等于1的数据就是国内的转化率了。
我们拿到 AD 等于空的删掉掉剩下的这些数据,然后我调用它的 filter,数据当中的 flattype 是 national 的就是国内转化数据,等于 national 的,就是把国内的数据全都是过滤出来了。
在过滤完国内的数据以后,去调一个 transformed 继续过滤,StageTag 等于2的数据过滤出来以后,我再调用一个count,计算出数据个数,在 filter 看的就是国内的。不论是国内的时间等于1的,国内转换率等于2的数量除以国内的等于1的数量的总数,就是国内查询转换率 。
三、将计算出来的数据追加到数据库(Mysql)
通过并行化创建 RDD
θ查询到旅客信息,1旅客信息到下单,2下单到完成支付
itcast domestic-inter-conversion-rate
第一个θ 步骤类型:θ查询到旅客信息,1旅客信息到下单,2下单到完成支付
第二个θ 类型:θ国内,1国际
等于“2“的数据量/等于”1“的数据量
代码
val itcast_domestic_inter_conversion_rate_RDD=
sc.parallelize(Array(UUID.randomUUID().toString()+”,”+”0,”=”0,”=NatinalRate_1)).map(_,split(regex=”,”))
/
/
通过StructType直接指定每个字段schema
val schema=StrutType(List(StructFild(“id”,StringType,true),StructField(“step_type”,IntegerType,true),StructFild
/
/
将RDD映射到rowRDD
val rowRDD=itcast_domestic_inter_conversion_rate_RDD.map(p=>Row(p(0),p(1).toInt,p(3).toFloat,dataTin
/
/
将schema信息应用到rowRDD上
val personDataFrame=sqlContext.createDataFrame(rowRDD,schma)
//
将数据追加到数据库
p
ersonDataFrame.write.mode(saveMode=”append”).jobc(url=”jbdc:mysq1://192.168.100.160:3306/gciantider”,table=
Gciantispider.itcast_domestic_inter_conversion_rate”,SparkMySq1Properties
Println(
“国内查询转换率“)
Println(NatinalRate_1)
先输入一段代码,通过并行化创建 RDD,在 UUID 中,将数值和应用场景拼接起来,其中0代表查询的旅客信息,1代表旅客信息下单,2代表下单完成支付的信息。其中只有四个值,可实际中有五个值,第五个字段在后面补齐。
注意因为应用场景很多,所以在写入数据库时一定要把数据的应用场景也一并写入。数据有了,之后输入schema将数据对应数据库。然后将数据进行遍历,将数据进行封装,封装成 Row,顺便补齐第五个数值 dataTime。DataFreme 封装完以后,处理好的数据写入 Mysql 数据库之中即可。