Spark—开发指南.docx

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

Spark开发指南?从高的层面来看,其实每一个Spark的应用,都是一个Driver类,通过运行用户定义的main函数,在集群上执行各种并发操作和计算Spark提供的最主要的抽象,是一个弹性分布式数据集(RDD),它是一种特殊集合,可以分布在集群的节点上,以函数式编程操作集合的方式,进行各种各样的并发操作。它可以由hdfs上的一个文件创建而来,或者是Driver程序中,从一个已经存在的集合转换而来。用户可以将数据集缓存在内存中,让它被有效的重用,进行并发操作。最后,分布式数据集可以自动的从结点失败中恢复,再次进行计算。Spark的第二个抽象,是并行计算中使用的共享变量。默认来说,当Spark并发运行一个函数时,它是以多个的task,在不同的结点上运行,它传递每一个变量的一个拷贝,到每一个独立task使用到的函数中,因此这些变量并非共享的。然而有时候,我们需要在任务中能够被共享的变量,或者在任务与驱动程序之间共享。Spark支持两种类型的共享变量:广播变量: 可以在内存的所有结点中被访问,用于缓存变量(只读)累加器: 只能用来做加法的变量,例如计数和求和本指南通过一些样例展示这些特征。读者最好是熟悉Scala,尤其是闭包的语法。请留意,Spark可以通过Spark-Shell的解释器进行交互式运行。你可能会需要它。注:所谓“闭包”,指的是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。接入Spark为了写一个Spark的应用,你需要将Spark和它的依赖,加入到CLASSPATH中。最简单的方法,就是运行sbt/sbt assembly来编译Spark和它的依赖,打到一个Jar里面core/target/scala_2.9.1/spark-core-assembly-0.0.0.jar,然后将它加入到你的CLASSPATH中。或者你可以选择将spark发布到maven的本地缓存中,使用sbt/sbt publish。它将在组织org.spark-project下成为一个spark-core.另外,你会需要导入一些Spark的类和隐式转换, 将下面几行加入到你程序的顶部import spark.SparkContextimport SparkContext._初始化Spark写Spark程序需要做的第一件事情,就是创建一个SparkContext对象,它将告诉Spark如何访问一个集群。这个通常是通过下面的构造器来实现的:new SparkContext(master, jobName, [sparkHome], [jars])Master参数是一个字符串,指定了连接的Mesos集群,或者用特殊的字符串“local”来指明用local模式运行。如下面的描述一般,JobName是你任务的名称,当在集群上运行的时候,将会在Mesos的Web UI监控界面显示。后面的两个参数,是用在将你的代码,部署到mesos集群上运行时使用的,后面会提到。在Spark的解释器中,一个特殊的SparkContext变量已经为你创建,变量名字叫sc。分布式数据集Spark围绕的核心概念,是弹性分布式数据集(RDD),一个有容错机制,可以被并行操作的集合。RDD是只读的、分区记录的集合。RDD只能基于在稳定物理存储中的数据集和其他已有的RDD上执行确定性操作来创建。这些确定性操作称之为转换,如map、filter、groupBy、join(转换不是程开发人员在RDD上执行的操作)。RDD不需要物化。RDD含有如何从其他RDD衍生(即计算)出本RDD的相关信息(即Lineage),据此可以从物理存储的数据计算出相应的RDD分区。There are two ways to create RDDs:?parallelizing?an existing collection in your driver program, or referencing a dataset in an external storage system, such as a shared filesystem, HDFS, HBase, or any data source offering a Hadoop InputFormat.目前有两种类型的RDD(红字翻译错误)--》 有两种创建RDD的方式:并行集合(Parrallelized Collections),接收一个已经存在的Scala集合,在它上面运行各种并发计算;?Hadoop数据集(Hadoop DataSets),在一个文件的每条记录上,运行各种函数。只要文件系统是Hdfs,或者hadoop支持的任意存储系统。这两种RDD都可以通过相同的方式进行操作。并行集合并行集合是通

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档