spark是基于scala写的,虽然spark有java API,或者python API,但是scala算是正统吧。

而且scala的语法书写起来十分的爽,不想java那样笨重,python不太了解,不给予评价。

接下来看下spark版的wordcount,相对与hadoop的mapreduce要简单许多。

/**
* Spark简单入门 worldCount
*/
object SparkWC {
def main(args: Array[String]): Unit = {
// 创建spark的配置对象
// setAppName()设置程序名字
// setMaster() 设置为本地运行
// local用一个线程模拟集群
// local[2]用两个线程模拟集群
// local[*]用所有的空闲线程模拟集群,,spark://spark101:7077
val sparkConf = new SparkConf().setAppName("SparkWC").setMaster("local")
// 根据conf创建SparkContext上下文,也就是程序执行入口
val sc = new SparkContext(sparkConf)
// 读文件
// val files: RDD[String] = sc.textFile("D:\\Demo\\hadoop\\input\\word.txt")
val files: RDD[String] = sc.textFile("D:\\Demo\\hadoop\\input\\word.txt")
// 进行处理数据,进行单词统计,首先我们需要调用 flatMap算子,进行切分压平
val lines: RDD[String] = files.flatMap(_.split(" "))
// 调用map算子,进行单词的统计
val worlds: RDD[(String, Int)] = lines.map((_,1))
// 调用reduceByKey,按key对value聚合
val re: RDD[(String, Int)] = worlds.reduceByKey(_ + _)
// 将数据进行降序排序
val sortWC: RDD[(String, Int)] = re.sortBy(_._2,false)
// 打印数据
println(sortWC.collect().toBuffer)
// 数据存储到hdfs上
sortWC.saveAsTextFile("D:\\Demo\\hadoop\\ouput\\out26") }
}

从代码中,可以看到spark的scala API的强大,希望对大家有用

spark_wordcount的更多相关文章

  1. [转] 用SBT编译Spark的WordCount程序

    问题导读: 1.什么是sbt? 2.sbt项目环境如何建立? 3.如何使用sbt编译打包scala? [sbt介绍 sbt是一个代码编译工具,是scala界的mvn,可以编译scala,java等,需 ...

  2. spark基础知识(1)

    一.大数据架构 并发计算: 并行计算: 很少会说并发计算,一般都是说并行计算,但是并行计算用的是并发技术.并发更偏向于底层.并发通常指的是单机上的并发运行,通过多线程来实现.而并行计算的范围更广,他是 ...

  3. 用SBT编译Spark的WordCount程序

    问题导读: 1.什么是sbt? 2.sbt项目环境如何建立? 3.如何使用sbt编译打包scala? sbt介绍 sbt是一个代码编译工具,是scala界的mvn,可以编译scala,java等,需要 ...

  4. intellij-idea打包Scala代码在spark中运行

    .创建好Maven项目之后(记得添加Scala框架到该项目),修改pom.xml文件,添加如下内容: <properties> <spark.version></spar ...

随机推荐

  1. 22.LinkedList

    LinkedList与ArrayList一样实现List接口,只是ArrayList是List接口的大小可变数组的实现,LinkedList是List接口链表的实现.基于链表实现的方式使得Linked ...

  2. php SQL 防注入的一些经验

    产生原因 一方面自己没这方面的意识,有些数据没有经过严格的验证,然后直接拼接 SQL 去查询.导致漏洞产生,比如: $id = $_GET['id']; $sql = "SELECT nam ...

  3. Mac 下 软件安装路径查看 命令: Which, 估计Linux 也是

    ✘ marikobayashi@juk  ~  which git /usr/bin/git marikobayashi@juk  ~  which maven maven not found ...

  4. ASP.NET MVC下使用AngularJs语言(三):ng-options

    今天使用angularjs的ng-options实现一个DropDownList下拉列表. 准备ASP.NET MVC的model: public class MobilePhone { public ...

  5. [转]语音识别中区分性训练(Discriminative Training)和最大似然估计(ML)的区别

    转:http://blog.sina.com.cn/s/blog_66f725ba0101bw8i.html 关于语音识别的声学模型训练方法已经是比较成熟的方法,一般企业或者研究机构会采用HTK工具包 ...

  6. zoj4110 Strings in the Pocket(manacher)

    传送:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=6012 题意:给定两个串$S$和$T$,可以翻转$S$串中的任意一个子段, ...

  7. PICE(6):集群环境里多异类端点gRPC Streaming - Heterogeneous multi-endpoints gRPC streaming

    gRPC Streaming的操作对象由服务端和客户端组成.在一个包含了多个不同服务的集群环境中可能需要从一个服务里调用另一个服务端提供的服务.这时调用服务端又成为了提供服务端的客户端了(服务消费端) ...

  8. Java学习笔记30(集合框架四:List接口)

    List接口继承自Collection接口 具有重要的三大特点: 1.有序集合:存入和取出的顺序一致 2.此接口的用户可以对列表中每个元素插入位置精确的控制:可以通过索引操作 3.可以存储重复元素 L ...

  9. Ubuntu 13.10下安装ns2 2.35遇到的小问题

    前面下载安装的环节我就不多说了,网上已经有很多的例子,最全的是一个新浪网友写的博客:http://blog.sina.com.cn/s/blog_785a23ae0100xraq.html.他使用的是 ...

  10. 记一次sentry部署过程

    本文记录下部署sentry和其中遇到的问题 Sentry 是一款基于 Django实现的错误日志收集和聚合的平台,它是 Python 实现的,但是其日志监控功能却不局限于python,对诸如 Node ...