一、Spark项目开发流程
-
添加hadoop-client版本、添加cdh仓库、打包注意事项、上传服务器使用rz命令、spark-submit提交打的jar包进行运行、结果控制台输出&hdfs输出、多个文件输入、输入文件通配符匹配、输出结果排序
-
开发WordCountApp使我们了解到了一个完整的项目开发流程;测试可以直接在spark-shell中进行测试。
二、Spark应用程序开发
2.1、Hive下求用户访问量TopN && Spark-shell实现&&IDEA下实现
需求:求用户访问量的TOP5:
需求分析:
1)、把end_user_id拿出来
- 使用tab键进行分割 --> split("\t")
- 拿到userid --> split(5)
2)、拿到用户对应的访问量,使用map赋上一个1,使用reduceByKey统计
- 根据key进行统计,reduceByKey(+) --> (user_id,1)
- 肯定是要有一个x/y反转的,反转过后使用sortByKey排序,再反转
3)、Top5
- take(5)
需求拿到以后详细设计就是一个填空题目:
1、Hive下求用户访问量TopN:
1、打开Hive客户端,创建一张page_views表:
create table page_views(track_time string,url string,session_id string,referer string,ip string,end_user_id string,city_id string)row format delimited fields terminated by '\t';
2、把本地准备好的数据加载进去:
load data local inpath '/home/hadoop/data/page_views.dat' overwrite into table page_views;
3、编写SQL,求的用户访问量的Top5:
select end_user_id,count(*) as cend_user_id c
NULL 60871
123626648 40
116191447 38
122764680 34
85252419 30 from page_views group by end_user_id order by c desc limit 5;
4、输出结果:
2、Spark-Core实现TopN:
hive (default)> select * from page_views limit 1;
OK
page_views.track_time page_views.url page_views.session_id page_views.referer page_views.ip page_views.end_user_id page_views.city_id
2013-05-19 13:00:00 http://www.taobao.com/17/?tracker_u=1624169&type=1 B58W48U4WKZCJ5D1T3Z9ZY88RU7QA7B1 http://hao.360.cn/ 1.196.34.243 NULL-1
二、Spark-shell实现:
1、读入文件:
val textFile = sc.textFile("file:///home/hadoop/data/page_views.dat")
2、使用split为它进行分割顺带取出第五位,并使用map为它赋上1个1;使用take(5)取值验证:
val user_id = textFile.map(x