Spark学习总结 - 入门.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
八 核心RDD RDD都需要包含以下四个部分 a.源数据分割后的数据块,源代码中的splits变量 b.关于“血统”的信息,源码中的dependencies变量 c.一个计算函数(该RDD如何通过父RDD计算得到),源码中的iterator(split)和compute函数 d.一些关于如何分块和数据存放位置的元信息,如源码中的partitioner和preferredLocations 例如:a.一个从分布式文件系统中的文件得到的RDD具有的数据块通过切分各个文件得到的,它是没有父RDD的,它的计算函数只读取文件的每一行并作为一个元素返回给RDD; b.对与一个通过map函数得到的RDD,它会具有和父RDD相同的数据块,它的计算函数式对每个父RDD中的元素所执行的一个函数 八 核心RDD RDD 表现形式 以 Spark 中内建的几个 RDD 举例来说: 信息 /RDD HadoopRDD FilteredRDD JoinedRDD Partitions 每个 HDFS 块一个分区,组成集合 与父 RDD 相同 每个 Reduce 任务一个分区 PreferredLoc HDFS 块位置 无 ( 或询问父 RDD) 无 Dependencies 无 ( 父 RDD) 与父 RDD 一对一 对每个 RDD 进行混排 Iterator 读取对应的块数据 过滤 联接混排的数据 Partitioner 无 无 HashPartitioner 八 核心RDD RDD 工作原理 RDD 是如何运行的呢?总高层次来看,主要分为三步:创建 RDD 对象, DAG 调度器创建执行计划, Task 调度器分配任务并调度 Worker 开始运行。 八 核心RDD RDD 工作原理 以下面一个按 A-Z 首字母分类,查找相同首字母下不同姓名总个数的例子来看一下 RDD 是如何运行起来的。 详细运行步骤如下: 步骤 1 :创建 RDD 。 上面的例子除去最后一个 collect 是个动作,不会创建 RDD 之外,前面四个转换都会创建出新的 RDD 。因此第一步就是创建好所有 RDD( 内部的五项信息 ) 。 八 核心RDD RDD 工作原理 步骤 2 :创建执行计划。 Spark 会尽可能地管道化,并基于是否要重新组织数据来划分 阶段 (stage) ,例如本例中的 groupBy() 转换就会将整个执行计划划分成两阶段执行。最终会产生一个 DAG(directed acyclic graph ,有向无环图 ) 作为逻辑执行计划 步骤 3 :调度任务。 将各阶段划分成不同的 任务 (task) ,每个任务都是数据和计算的合体。在进行下一阶段前,当前阶段的所有任务都要执行完成。因为下一阶段的第一个转换一定是重新组织数据的,所以必须等当前阶段所有结果数据都计算出来了才能继续。 八 RDD操作 RDD提供了两种类型的操作:transformation和action 1,transformation是得到一个新的RDD,方式很多,比如从数据源生成一个新的RDD,从RDD生成一个新的RDD 2,action是得到一个值,或者一个结果(直接将RDD cache到内存中) 3,所有的transformation都是采用的懒策略,就是如果只是将transformation提交是不会执行计算的,计算只有在action被提交的时候才被触发。 八 RDD操作 1)如何获取RDD a.从共享的文件系统获取,(如:HDFS) b.通过已存在的RDD转换 c.将已存在scala集合(只要是Seq对象)并行化 ,通过调用SparkContext的parallelize方法实现 d.改变现有RDD的之久性;RDD是懒散,短暂的。 (RDD的固化:cache缓存至内错; save保存到分布式文件系统) 八 RDD操作 Transformation操作(1): map(func):对调用map的RDD数据集中的每个element都使用func,然后返回一个新的RDD,这个返回的数据集是分布式的数据集 filter(func) : 对调用filter的RDD数据集中的每个元素都使用func,然后返回一个包含使func为true的元素构成的RDD flatMap(func):和map差不多,但是flatMap生成的是多个结果 mapPartitions(func):和map很像,但是map是每个element,而mapPartitions是每个partition mapPartitionsWithSplit(func):和m

文档评论(0)

118118 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档