第11课:彻底解析wordcount运行原理.pdf

第11课:彻底解析wordcount运行原理.pdf

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第11课:彻底解析wordcount运行原理

本期内容: 1. 从数据流动视角解密WordCount ,即用Spark 作单词计数统计,数据到底是怎么流动的。 2. 从RDD 依赖关系的视角解密WordCount 。Spark 中的一切操作皆RDD,后面的RDD 对前面的RDD 有依赖关系。 3. DAG 与Lineage 的思考。依赖关系会形成DAG。 1. 从数据流动视角解密WordCount (1)在IntelliJ IDEA 中编写下面代码: package com.dt.spark /** * 使用Java 的方式开发进行本地测试Spark 的WordCount 程序 * @author DT 大数据梦工厂 * /ilovepain */ import org.apache.spark.SparkConf import org.apache.spark.SparkContext object WordCount { def main(args: Array[String]){ val conf = new SparkConf() conf.setAppName(Wow, My Fir t Spark App!) conf.setMaster(local) val sc = new SparkContext(conf) val lines = sc.textFile(D://tmp//helloSpark.txt, 1) val words = lines.flatMap { line = line.split( ) } val pairs = words.map { word = (word,1) } val wordCounts = pairs.reduceByKey(_+_) wordCounts.foreach(wordNumberPair = println(wordNumberPair._1 + : + wordNumberPair._2)) sc.stop() } } (2 )在D 盘下地tmp 文件夹下新建helloSpark.txt 文件,内容如下: Hello Spark Hello Scala Hello Hadoop Hello Flink Spark is awesome (3 ) 在WordCount 代码区域点击右键选择Run WordCount。可以得到如下运行结果: Flink : 1 Spark : 2 is : 1 Hello : 4 awesome : 1 Hadoop : 1 Scala : 1 下面从数据流动的视角分析数据到底是怎么被处理的。 说明: Spark 有三大特点: 1. 分布式。无论数据还是计算都是分布式的。默认分片策略:Block 多大,分片就多大。但 这种说法不完全准确,因为分片切分时有的记录可能跨两个Block,所以一个分片不会严格 地等于Block 的大小,例如HDFS 的Block 大小是128MB 的话,分片可能多几个字节或少 几个字节。一般情况下,分片都不会完全与Block 大小相等。 分片不一定小于Block 大小,因为如果最后一条记录跨两个Block 的话,分片会把最后一条 记录放在前一个分片中。 2. 基于内存 (部分基于磁盘) 3. 迭代 textFile 源码 (SparkContext 中); def textFile( path: String, minPartitions: Int = defaultMinPartitions): RDD[String] = withScope { assertNotStopped() hadoopFile(path, classOf[TextInputFormat , classOf[LongWritable , classOf[Text , minPartitions).map(pair = pair._2.toString) } 可以看出在进行了hadoopFile 之后又进行了map 操作。 HadoopRDD 从HDFS 上读取分布式文件,并且以数据分片的方式存在于集群之中。 map 的源码 (RDD.scala 中) def map [U: Class

文档评论(0)

xxj1658888 + 关注
实名认证
内容提供者

教师资格证持证人

该用户很懒,什么也没介绍

领域认证该用户于2024年04月12日上传了教师资格证

1亿VIP精品文档

相关文档