第一个Spark程序(编码+Spark-submit提交运行)

[size=xx-large]第一个程序[/size]

将搜狗实验室的日志分析,分析出查询排行榜;
需要先将txt文件传到HDFS上,然后分析;


程序代码:

package main.scala
import org.apache.spark.{ SparkContext, SparkConf }
import org.apache.spark.SparkContext._

object SogouQA {
def main(args: Array[String]) {
// if (args.length == 0) { 都在里面运行不需要提交参数
// System.err.println("Usage: WordCount1 <file1>")
// System.exit(1)
// }

val conf = new SparkConf().setAppName("SogouQA")
val sc = new SparkContext(conf)

//搜索结果排名第1,但是点击次序排在第2的数据有多少?
// 数据分为六列,用tab健分开,第2列是session
val rdd1 = sc.textFile("hdfs://hadoop1:8000/datatest/test/SogouQ1.txt")
val rdd2 = rdd1.map(_.split("\t")).filter(_.length == 6)
rdd2.count()

//session查询次数排行榜、相当于查找session最多的
//思路:先把session变成KV格式,然后每个元素做reduceByKey,这样就求出和,知道哪个最大,
//这时,再把次数和sessionId调换,就是KV调换,再排序,再调换,就得出了排行榜
val rdd4 = rdd2.map(x => (x(1), 1)).reduceByKey(_ + _).map(x => (x._2, x._1)).sortByKey(false).map(x => (x._2, x._1))
rdd4.saveAsTextFile("hdfs://hadoop1:8000/datatest/test/output1")
// val rdd = sc.parallelize(Array("1","2"));
sc.stop()
}
}


[b]1、上传SogouQA.txt到HDFS上[/b]
bin/hdfs dfs -put SogouQ1.txt /datatest/test/ 


[img]http://dl2.iteye.com/upload/attachment/0104/5821/8b1cc56f-795e-37e0-b4db-afc46974f252.png[/img]

[b]2、将代码打成jar,Eclipse导出即可;然后将SQA.JAR放到spark目录下;[/b]
然后用Spark-submit提交:
bin/spark-submit  --master spark://hadoop1:7077 --class main.scala.SogouQA SQA.jar


[b]3、当程序运行时,我们在Spark的网页客户端上能看到以下信息:[/b]

[img]http://dl2.iteye.com/upload/attachment/0104/5834/f810ab17-fd25-3b97-9299-0c179f608b6f.png[/img]

[b]4、运行结束后,我们能看到HDFS上的文件;[/b]

[img]http://dl2.iteye.com/upload/attachment/0104/5836/bf576567-1ba3-31b7-817e-739a07fca8f8.png[/img]

[b]5、这些文件是零碎的,我们需要在命令行里将这个合并(目前只知道这一种办法)[/b]
bin/hdfs dfs -getmerge hdfs://hadoop1:8000/datatest/test/output1 result1


[b]6、
ls -lsa
查看,有了result1[/b]

[b]7、我们查看下,取前10名看下[/b]
[hadoop@hadoop1 hadoop240]$ head result1
(b3c94c37fb154d46c30a360c7941ff7e,676)
(cc7063efc64510c20bcdd604e12a3b26,613)
(955c6390c02797b3558ba223b8201915,391)
(b1e371de5729cdda9270b7ad09484c4f,337)
(6056710d9eafa569ddc800fe24643051,277)
(637b29b47fed3853e117aa7009a4b621,266)
(c9f4ff7790d0615f6f66b410673e3124,231)
(dca9034de17f6c34cfd56db13ce39f1c,226)
(82e53ddb484e632437039048c5901608,221)
(c72ce1164bcd263ba1f69292abdfdf7c,214)


这里我们已经分析结束。

[size=large][b]附录[/b][/size]
SogouQA.txt的文件格式如下:

第一列是时间 第2列是sessionId 第三列是搜索词 第4列是搜索结果排名 第5列是点击次序 第六列是url

其余数据,可以自己造数据

20111230000005	57375476989eea12893c0c3811607bcf	奇艺高清	1	1	http://www.qiyi.com/
20111230000005 66c5bb7774e31d0a22278249b26bc83a 凡人修仙传 3 1 http://www.booksky.org/BookDetail.aspx?BookID=1050804&Level=1
20111230000007 b97920521c78de70ac38e3713f524b50 本本联盟 1 1 http://www.bblianmeng.com/
20111230000008 6961d0c97fe93701fc9c0d861d096cd9 华南师范大学图书馆 1 1 http://lib.scnu.edu.cn/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值