scala> val textFile = sc.textFile("/Users/admin/spark-1.5.1-bin-hadoop2.4/README.md")
scala> val topWord = textFile.flatMap(_.split(" ")).filter(!_.isEmpty).map((_,1)).reduceByKey(_+_).map{case (word,count) =>(count,word)}.sortByKey(false)
scala> topWord.take(5).foreach(println)
redult:
(21,the)
(14,Spark)
(14,to)
(12,for)
(10,a)
 
 
 
 
 
原文参考:

下面就是Spark Scala REPL shell的简单实例:

1 scala> val hamlet = sc.textFile("~/temp/gutenburg.txt")
2 hamlet: org.apache.spark.rdd.RDD[String] = MappedRDD[1] at textFile at <console>:12

  在上面的代码中,我们读取了文件,并创建了一个String类型的RDD,每一个String代表文件中的每一行。

1 scala> val topWordCount = hamlet.flatMap(str=>str.split(" "))
2 .filter(!_.isEmpty).map(word=>(word,1)).reduceByKey(_+_)
3 .map{case (word, count) => (count, word)}.sortByKey(false)
4  
5 topWordCount: org.apache.spark.rdd.RDD[(Int, String)] =MapPartitionsRDD[10] at sortByKey at <console>:14

  1、通过上述命令我们可以发现这个操作非常简单——通过简单的Scala API来连接transformations和actions。
  2、可能存在某些words被1个以上空格分隔的情况,导致有些words是空字符串,因此需要使用filter(!_.isEmpty)将它们过滤掉。
  3、每个word都被映射成一个键值对:map(word=>(word,1))。
  4、为了合计所有计数,这里需要调用一个reduce步骤——reduceByKey(_+_)。 _+_ 可以非常便捷地为每个key赋值。
  5、我们得到了words以及各自的counts,下一步需要做的是根据counts排序。在Apache Spark,用户只能根据key排序,而不是值。因此,这里需要使用map{case (word, count) => (count, word)}将(word, count)流转到(count, word)。
  6、需要计算最常用的5个words,因此需要使用sortByKey(false)做一个计数的递减排序。

1 scala> topWordCount.take(5).foreach(x=>println(x))
2 (1044,the)
3 (730,and)
4 (679,of)
5 (648,to)
6 (511,I)
 
  上述命令包含了一个.take(5) (an action operation, which triggers computation)和在 ~/temp/gutenburg.txt文本中输出10个最常用的words。 

二、spark入门之spark shell:文本中发现5个最常用的word的更多相关文章

  1. 三、spark入门:文本中发现5个最常用的word,排除常用停用词

    package com.yl.wordcount import java.io.File import org.apache.spark.{SparkConf, SparkContext} impor ...

  2. 一、spark入门之spark shell:wordcount

    1.安装完spark,进入spark中bin目录: bin/spark-shell   scala> val textFile = sc.textFile("/Users/admin/ ...

  3. Spark入门:Spark运行架构(Python版)

    此文为个人学习笔记如需系统学习请访问http://dblab.xmu.edu.cn/blog/1709-2/ 基本概念 *  RDD:是弹性分布式数据集(Resilient Distributed ...

  4. 【CDN+】 Spark入门---Handoop 中的MapReduce计算模型

    前言 项目中运用了Spark进行Kafka集群下面的数据消费,本文作为一个Spark入门文章/笔记,介绍下Spark基本概念以及MapReduce模型 Spark的基本概念: 官网: http://s ...

  5. Spark入门实战系列--2.Spark编译与部署(中)--Hadoop编译安装

    [注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .编译Hadooop 1.1 搭建环境 1.1.1 安装并设置maven 1. 下载mave ...

  6. Spark入门实战系列--6.SparkSQL(中)--深入了解SparkSQL运行计划及调优

    [注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 1.1  运行环境说明 1.1.1 硬软件环境 线程,主频2.2G,10G内存 l  虚拟软 ...

  7. 【Spark篇】---Spark中transformations算子二

    一.前述 今天继续整理几个Transformation算子如下: mapPartitionWithIndex repartition coalesce groupByKey zip zipWithIn ...

  8. Spark下载与入门(Spark自学二)

    2.1 下载Spark 略 2.2 Spark中Python和Scala的shell Spark shell可用来与分布式存储在许多机器的内存或者硬盘上的数据进行交互,并且处理过程的分发由Spark自 ...

  9. Spark入门(二)--如何用Idea运行我们的Spark项目

    用Idea搭建我们的Spark环境 用IDEA搭建我们的环境有很多好处,其中最大的好处,就是我们甚至可以在工程当中直接运行.调试我们的代码,在控制台输出我们的结果.或者可以逐行跟踪代码,了解spark ...

随机推荐

  1. 运行jar包

    windos下,打开dos命令cmd然后cd 你的路径(比如E:/新建文件夹) linux下,打开终端cd 到你的路径( 然后输入java -jar 要运行的jar.jar

  2. Spyder提示ValueError: API 'QString' has already been set to version 1

    转载自:http://wuyuans.com/2013/02/spyder-valueerror-api-qstring-has-already-been-set-to-version-1/ 在IPy ...

  3. SpecFlow使用入门之C# BDD

    SpecFlow使用入门 http://www.specflow.org/ SpecFlow是一个BDD工具,在这里对BDD不多赘述,你可以阅读一下微软2010年十二月的一篇文章,此外如果你想要更多了 ...

  4. 在线压缩JS的工具

    给大家介绍款在线压缩JS的工具 首先说下该工具的域名:http://javascriptcompressor.com/ 进入后界面如下: 具体要讲下它的功能点:在线压缩 Javascript 源码可以 ...

  5. tcp连接以及网络I/O的几个问题

    这段时间在做一些web方面开发的事情,用的Nginx+fast-cgi,计划深入看一下Nginx的内部实现和架构,以方便理解和调优.后面准备写一篇有关Nginx介绍和深度解析的文章,要深入理解web服 ...

  6. IE8下提示'console'未定义错误

    在开发的过程中由于调试的原因,在代码中加入console.info("xxxx"),而未进行删除 在IE8下测试该代码所在的页面报错,如下: 需要注意的是,使用console对象查 ...

  7. window.parent与window.opener的区别

    有这样一个需求,弹出一个新窗口 并从该新页面的select选择框中选择需要的类别,再返回到之前的父窗口页面的某个文本框中.这里就要用到window.parent和window.opener 如题两种方 ...

  8. 使用entity framework开发oracle

    A.vs2010 SP1 B.ODAC(http://www.oracle.com/technetwork/database/windows/downloads/index-101290.html) ...

  9. python JSON API duckduckgo search engine 使用duckduckgo API 尝试搜索引擎

    The duckduckgo.com's search engine is very neat to use. Acutally it has many things to do with other ...

  10. OleDbCommand cmd.Parameters.AddWithValue 添加参数时需要按照存储过程参数的顺序加入

    在使用存储过程时,参数出入的顺序要一致.