This website requires JavaScript.

Spark使用案例-YouTube数据分析[译]

本文是对YouTube数据的分析.所有分析都使用Apache Spark. YouTube的数据和字典如下,有了这些数据我们可以算评分最高的视频影片,谁传了最多电影等数据. 如果你不太了解Spark可以参考新手教程.

数据集描述

Column 1: 视屏 id 11位. Column 2: 视频上传人. **Column 3: **YouTube创建日期与视频上传日期间隔的天数. Column 4: 视频类别. Column 5: 视频长度. Column 6: 视频观看数量. Column 7: 视频评分. Column 8: 评分数量 Column 9: 评论数量. Column 10: 相关视频id.

数据文件点此下载

语句1:

找到Top5的 视频类型.

//创建RDD数据集 val textFile = sc.textFile("hdfs://localhost:9000/youtubedata.txt")

//获取第四列的影片类型 val counts = textFile.map(line=>{var YoutubeRecord = ""; val temp=line.split("\t"); ;if(temp.length >= 3) {YoutubeRecord=temp(3)};YoutubeRecord})

//创建键值元组 (1是数量) val test=counts.map ( x => (x,1) )

//使用reduceByKey 对类型数量求和. 然后交换类别名和数量字段,最后排序.然后获取top的数据 val res=test.reduceByKey(+).map(item => item.swap).sortByKey(false).take(5)

输出

(String, Int)] = Array((Travel & Events,112), (Sports,251), (Science & Technology,80), (Pets & Animals,95), (People & Blogs,398)

语句2:

找出评分top10的视频.

//创建RDD val textFile = sc.textFile("hdfs://localhost:9000/youtubedata.txt")

//首先过滤掉不足6个字段的结果,避免ArrayIndexOutOfBounds 异常.然后用map方法分割生成新的RDD val counts = textFile.filter { x => {if(x.toString().split("\t").length >= 6) true else false} }.map(line=>{line.toString().split("\t")})

//创建键值对 val pairs = counts.map(x => {(x(0),x(6).toDouble)})

//计算并排序 val res=pairs.reduceByKey(+).map(item => item.swap).sortByKey(false).take(10)

原文地址

Spark Use Case – Youtube Data Analysis

 

0条评论
avatar