spark_wordcount
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的更多相关文章
- [转] 用SBT编译Spark的WordCount程序
问题导读: 1.什么是sbt? 2.sbt项目环境如何建立? 3.如何使用sbt编译打包scala? [sbt介绍 sbt是一个代码编译工具,是scala界的mvn,可以编译scala,java等,需 ...
- spark基础知识(1)
一.大数据架构 并发计算: 并行计算: 很少会说并发计算,一般都是说并行计算,但是并行计算用的是并发技术.并发更偏向于底层.并发通常指的是单机上的并发运行,通过多线程来实现.而并行计算的范围更广,他是 ...
- 用SBT编译Spark的WordCount程序
问题导读: 1.什么是sbt? 2.sbt项目环境如何建立? 3.如何使用sbt编译打包scala? sbt介绍 sbt是一个代码编译工具,是scala界的mvn,可以编译scala,java等,需要 ...
- intellij-idea打包Scala代码在spark中运行
.创建好Maven项目之后(记得添加Scala框架到该项目),修改pom.xml文件,添加如下内容: <properties> <spark.version></spar ...
随机推荐
- noip第13课资料
- Codeforces828 D. High Load
D. High Load time limit per test 2 seconds memory limit per test 512 megabytes input standard input ...
- java数组-如何在一堆数据中使用数组!
数组 1.类型一致的一组数据,其实相当于集合概念. 数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成.其中,每一个数据称作一个数组元素(item),每个数组元素可以通过一个下标/索引来 ...
- 完善版封装canvas分享组件
import regeneratorRuntime from "../../../lib/regenerator-runtime/runtime"; let ctx = false ...
- 【Spark调优】:如果实在要shuffle,使用map侧预聚合的算子
因业务上的需要,无可避免的一些运算一定要使用shuffle操作,无法用map类的算子来替代,那么尽量使用可以map侧预聚合的算子. map侧预聚合,是指在每个节点本地对相同的key进行一次聚合操作,类 ...
- 从 moment -> nodejs -> sequelize -> postgres,你都得设置好时区
背景 最近在做报表统计,因为 sequelize 的时区配置没加导致了统计数字对不上的问题. 问:大家都知道时区,但是你清楚 UTC 和 GMT 的区别吗? 答:UTC 是我们现在用的时间标准,GMT ...
- OSI七层模型和tcp/ip四层模型对比
OSI 与TCP/IP 模型对比 OSI 协议层名称 TCP/IP 协议层名称 封装的单元 功能描述 TCP/IP协议 应用层(Application) 应用层(Application) 数据 应用程 ...
- 使用maven构建多模块项目,分块开发
在多人使用Maven协作开发项目时,尤其是稍微上点规模的项目,每个RD的工作都细分到具体功能和模块,有些模块甚至还要单独部署. 我们假设有这样一个商城项目,包括以下几个模块: 商城前台(shop) 管 ...
- hashCode()方法和equal()方法的区别
本文参考地址:http://www.cnblogs.com/zgq0/p/9000801.html hashCode()方法和equal()方法的作用其实一样,在Java里都是用来对比两个对象是否相等 ...
- Netty精粹之轻量级内存池技术实现原理与应用
摘要: 在Netty中,通常会有多个IO线程独立工作,基于NioEventLoop的实现,每个IO线程负责轮询单独的Selector实例来检索IO事件,当IO事件来临的时候,IO线程开始处理IO事件. ...