scala> val wordcount = rdd1.flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_)
wordcount: org.apache.spark.rdd.RDD[(String, Int)] = ShuffledRDD[10] at reduceByKey at <console>:23
scala> wordcount.toDebugString
res3: String =
(2) ShuffledRDD[10] at reduceByKey at <console>:23 []
+-(2) MapPartitionsRDD[9] at map at <console>:23 []
| MapPartitionsRDD[8] at flatMap at <console>:23 []
| MapPartitionsRDD[1] at textFile at <console>:21 []
| /README.md HadoopRDD[0] at textFile at <console>:21 []
scala>
或者
疑问:为什么没有MappedRDD?难道是版本问题??
2、动手实战操作搜狗日志文件
本节中所用到的内容是来自搜狗实验室,网址为:
我们使用的是迷你版本的tar.gz格式的文件,其大小为87K,下载后如下所示:
因为,考虑我的机器内存的自身情况。
或者
spark@SparkSingleNode:~$ wget
spark@SparkSingleNode:~$ tar -zxvf SogouQ2012.mini.tar.gz
查看它的部分内容
spark@SparkSingleNode:~$ head SogouQ.mini
该文件的格式如下所示:
访问时间 \t 用户ID \t 查询词 \t 该URL在返回结果中的排名 \ t用户点击的顺序号 \t 用户点击的URL
开启hdfs和spark集群
把解压后的文件上传到hdfs的/目录下
spark@SparkSingleNode:/usr/local/hadoop/hadoop-2.6.0$ bin/hadoop fs -copyFromLocal ~/SogouQ.mini /
开启spark-shell
spark@SparkSingleNode:/usr/local/spark/spark-1.5.2-bin-hadoop2.6/bin$ ./spark-shell --master spark://SparkSingleNode:7077
接下来 我们使用Spark获得搜索结果排名第一同时点击结果排名也是第一的数据量,也就是第四列值为1同时第五列的值也为1的总共的记录的个数。
读取SogouQ.mini文件