Spark实战练习03--Pair RDD

1、场景

现有某网站的网站日志,内容为用户对网站的请求,包含user ID、IP address、datetime……等等web

另有一份文件中包含用户的帐户详细信息数据,包含User ID、creation date、first 、last name等等数组

2、任务

一、统计每位用户的请求次数网站

// 一、从文件建立一个RDD,每行为一个元素,*读取目录下全部文件 val mydata=sc.textFile("hdfs:/loudacre/weblogs/*") // 二、分组数据 val mydata1=mydata.map(line => line.split(" ")) // 三、构造K-V,Pair RDD val mydata2=mydata1.map(line =>(line(2),1)) // 四、统计用户的请求次数 val mydata3=mydata2.reduceByKey((v1,v2)=> v1 + v2)

二、统计相同请求次数的用户spa

// 一、转置,将次数与用户id互换位置,方便使用countByKey获得一个map结构 val mydata4=mydata3.map(line=>(line._2,line._1)) // 二、计算相同请求次数的用户 val myresult1=mydata4.countByKey()

三、统计用户访问的IP地址日志

// 一、构建用户:IP Pair RDD val mydata5=mydata1.map(line =>(line(2),line(0))) // 二、统计用户访问的IP地址 val myresult2=mydata5.groupByKey()

四、关联两个文件,获得用户的访问次数code

RDD格式:blog

userid1 6 Rick Hopper
userid2 8 Lucio Arnold
userid3 2 Brittany Parrottci

// 一、引入数据,建立一个RDD,每行为一个元素
val mydata6=sc.textFile("hdfs:/loudacre/accounts/*") // 二、分组数据,获得数组
val mydata7=mydata6.map(line=>line.split(",")) // 三、构建结构
val mydata8=mydata7.map(line=>(line(0),line)) // 四、链接数据
val myresult3=mydata8.join(mydata3) // 五、格式化输出
for( line <- myresult3.take(10)){ printf("%s %s %s %s\n",line._1,line._2._2,line._2._1(3),line._2._1(4))}
相关文章
相关标签/搜索