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 ...
随机推荐
- 嵌入式FIFO核的调用
本次设计源码下载地址:http://download.csdn.net/detail/noticeable/9915523 课程目标:学习调用quartus II 软件的FIFO(先进先出)IP核,并 ...
- Linux/unix 查看端口占用
有的时候我们想找到某个端口被那个程序.程序占用,然后 kill 掉他,所以今天就来探讨一下. 1.netstat -apn|grep port | 关键字(java/kafka/nginx) 图中所示 ...
- 调用opencv相关函数,从视频流中提取出图片序列&&&&jpg图片序列,转化成avi格式视频
/************************ @HJ 2017/3/30 参考http://blog.sina.com.cn/s/blog_4b0020f301010qcz.html修改的代码 ...
- NET Core微服务之路:SkyWalking+SkyApm-dotnet分布式链路追踪系统的分享
对于普通系统或者服务来说,一般通过打日志来进行埋点,然后再通过elk或splunk进行定位及分析问题,更有甚者直接远程服务器,直接操作查看日志,那么,随着业务越来越复杂,企业应用也进入了分布式服务化的 ...
- 突然 不能f**q
ss 突然访问不了,于是去查看ip是否被f,发现国outer 国inner 都通,不知道什么情况,后来把 系统代理模式 改为全局,发觉可以,又把他改为 pac模式,正常了. 记录一 ...
- Android热修复——Tinker的集成
前言 做前端开发的都知道,当我们项目做完了以后,都会把应用上传到应用市场上供用户下载使用,比如上传到应用宝啊,应用汇啊,360啊,小米,华为,魅族啊,等等但是,有时候我们会经常遇到一些很扯淡的事情,刚 ...
- Android 从浏览器启动应用
核心逻辑为AndroidMainfest.xml里面的指定Activity里增加配置: <intent-filter> <data android:scheme="***& ...
- The MAC is invalid
在使用laravel框架进行网站开发时,我们会使用laravel的Crypt类对用户的密码进行加密来达到信息加密的目的,Crypt类会对数据加密时会依赖APP_KEY,所以当更换了APP_KEY时,再 ...
- HTTP 协议支持的十种方法
GET 获取资源,用来请求访问已被URI识别的资源. POST 传输实体主体. PUT 传输文件,(鉴于HTTP/1.1的PUT方法自身不带验证机制,任何人都可以上传文件,存在安全性问题,因此一般We ...
- JavaScript在IE和Firefox的不兼容问题解决方法总结
1.兼容Firefox的 outerHTML,Firefox中没有outerHtml的方法. if (window.HTMLElement) { HTMLElement.prototype.__def ...