最具影响力的数字化技术在线社区

168大数据

 找回密码
 立即注册

QQ登录

只需一步,快速开始

1 2 3 4 5
打印 上一主题 下一主题
开启左侧

简单的Spark应用源码案例

[复制链接]
跳转到指定楼层
楼主
发表于 2014-10-24 17:09:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多数据大咖,获取更多知识干货,轻松玩转大数据

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

Spark应用源码下载见: Github

Apache的Spark是通用的提供类似hadoop的MapReduce集群计算框架,拥有强大的抽象处理大型数据集。对于涉及到性能,功能和API种种原因,Spark正在变得比MapReduce更受欢迎。

该源码将教会你如何使用Scala学习如何编写,编译和运行一个Spark简单的应用程序。这个案例是一个单词计数WordCount, 这是最经典的MapReduce应用,在字数统计这个案例中,我们的目标是在在我们的语料库的字母中找出最流行的词汇分布。

1. 读入一个文本文档的输入。
2.统计每个单词出现的次数。
3.筛选少于1百万次的所有单词。
3.对于剩余的结果,统计每个字母的次数。

在MapReduce的,这将需要两个MapReduce工作以及在它们之间持续中间数据到HDFS。相反在Spark中,你可以用更少的代码大约90%行写一个作业。

我们的输入文档是剥离标点符号的一个巨大的文本文件。完整的Scala程序看起来像这样:

import org.apache.spark.SparkContext

import org.apache.spark.SparkContext._

import org.apache.spark.SparkConf


object SparkWordCount {

  def main(args: Array[String]) {

    val sc = new SparkContext(new SparkConf().setAppName("Spark Count"))

    val threshold = args(1).toInt


    // split each document into words

    val tokenized = sc.textFile(args(0)).flatMap(_.split(" "))


    // count the occurrence of each word

    val wordCounts = tokenized.map((_, 1)).reduceByKey(_ + _)


    // filter out words with less than threshold occurrences

    val filtered = wordCounts.filter(_._2 >= threshold)


    // count characters

    val charCounts = filtered.flatMap(_._1.toCharArray).map((_, 1)).reduceByKey(_ + _)


    System.out.println(charCounts.collect().mkString(", "))

  }

}

Spark 使用 "lazy evaluation", 意味着转换只有一个action操作被调用时才会在集群中执行,action操作在这个案例是collect收集,将数据拉到客户端然后saveAsTextFile, 也就是将数据写到一个类似HDFS文件系统中.

值得注意的是,Spark的 "reduce"稍微区别于MapReduce. 在MapReduce一个reduce函数调用接受一个规定Key的所有记录,而在Spark,只接受两个参数,Spark的reduce类似mao的groupBy操作。

详细配置见英文



楼主热帖
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 赞 踩

168大数据 - 论坛版权1.本主题所有言论和图片纯属网友个人见解,与本站立场无关
2.本站所有主题由网友自行投稿发布。若为首发或独家,该帖子作者与168大数据享有帖子相关版权。
3.其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和168大数据的同意,并添加本文出处。
4.本站所收集的部分公开资料来源于网络,转载目的在于传递价值及用于交流学习,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。
5.任何通过此网页连接而得到的资讯、产品及服务,本站概不负责,亦不负任何法律责任。
6.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源,若标注有误或遗漏而侵犯到任何版权问题,请尽快告知,本站将及时删除。
7.168大数据管理员和版主有权不事先通知发贴者而删除本文。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

关于我们|小黑屋|Archiver|168大数据 ( 京ICP备14035423号|申请友情链接

GMT+8, 2024-6-18 20:48

Powered by BI168大数据社区

© 2012-2014 168大数据

快速回复 返回顶部 返回列表