文档章节

Spark概要

jhonephone
 jhonephone
发布于 2014/09/11 11:55
字数 823
阅读 85
收藏 0

1. 在较高层次上,每个spark应用程序包含一个驱动程序,去调用用户的main函数,在集群上执行各种并行操作。spark主要的抽象,是提供了RDD数据类型。RDD数据类型是一组分割在集群上可以被并行操作的元素集合。RDD可以通过HDFS上的文件,驱动程序已有的集合,或对已有的RDD进行变换来创建。用户也可以将RDD持久化,保存在内存中,以被有效的重用。RDD也将自动从失败中恢复。spark的第二个抽象是可以被并行操作的共享变量。默认情况下,spark运行函数时,将在不同的节点上启动独立的任务。spark支持2类共享变量,广播变量,在每一个节点上保存一个值,累积变量支持累加操作。

2. spark初始化

spark应用程序首先应该创建JavaSparkContext对象

SparkConf conf = new SparkConf().setAppName(appName).setMaster(master);
JavaSparkContext sc = new JavaSparkContext(conf);

appname设置显示在集群UI上应用程序名,master是YARN集群的URL,或者字符串"local"表示运行本地模式。若采用spark-submit命令提交jar包,可由--master选项指定。

3. 创建RDD

RDD可以通过parallelizing一个驱动程序中已存在的集合,或者引用一个外部存储系统,如HDFS,HBase创建

List<Integer> data = Arrays.asList(1, 2, 3, 4, 5);
JavaRDD<Integer> distData = sc.parallelize(data, 20);

集合并行化的一个重要参数就是份数(slices),每一份数据将对应一个任务,spark默认会根据集群自动确定份数。

JavaRDD<String> distFile = sc.textFile("data.txt", 20);

如果文件名是本地文件系统,那么需要在所有工作节点的相同目录下拷贝一份数据,或者采用网络共享文件系统。所有的spark文件输入方法也支持目录,压缩文件,通配符。默认情况下一个分块(block)将对应一份(slice)。除了文本文件,spark还支持其它数据格式,如:JavaSparkContext.wholeTextFiles,SequenceFiles。

4. RDD操作支持两种,变换(transformation)根据已经存在的数据集产生一个新的数据集,动作(action)在RDD上运行计算并向驱动程序返回一个值。例如:map就是一个transformation,将所有的数据元素通过一个函数,结果返回一个新的RDD,reduce就是一个action,采用某个函数聚合所有元素,向驱动程序返回一个结果。所有的transformation操作在调用后,并不会立即执行,只有当某个action需要向驱动程序返回一个结果时,才执行。这样设计使得spark效率更高,例如在需要将一个RDD通过一个map,然后再使用reduce返回一个结果,这时就只需要向驱动程序返回reduce的结果,而不是更大的map后的数据集。默认RDD是不会一直存在于内存当中的,我们可以调用persist或cache方法持久化,也支持将RDD持久化入硬盘,或者备份到多个节点。

5. RDD transformation方法

map(T -> U)  filter(T -> Boolean)  flatMap(T -> Iterator<U>)  mapPartitions(Iterator<T> -> Iterator<U>)

mapPartitionsWithIndex((int,Iterator<T>) -> Iterator<U>)  ...

© 著作权归作者所有

上一篇: maven和git使用
下一篇: Hadoop Streaming和awk
jhonephone
粉丝 5
博文 19
码字总数 24506
作品 0
合肥
高级程序员
私信 提问
Apache Spark 2.4.0 正式发布

Apache Spark 2.4 与昨天正式发布,Apache Spark 2.4 版本是 2.x 系列的第五个版本。 如果想及时了解 Spark、Hadoop或者Hbase相关的文章,欢迎关注微信公共帐号: itebloghadoop Apache Spa...

Spark
2018/11/09
0
0
SPARK 源码分析技术分享(带bilibili视频)

SPARK 源码分析技术分享 (带bilibili视频) 【本站点正在持续更新中…2018-12-05…】 SPARK 1.6.0-cdh5.15.0 Hadoop 2.6.0-cdh5.15.0 spark-scala-maven 微信(技术交流) : thinktothings SPA...

thinktothings
2018/12/02
0
0
Spark成为大数据高手进阶步骤

什么是Spark Spark是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用的并行计算框架,Spark基于map reduce算法实现的分布式计算,拥有Hadoop MapReduce所具有的优点;但不同于MapRedu...

MoksMo
2015/11/05
2.2K
1
微软发布 .Net for Apache Spark :用什么语言开发大数据都可以

4 月 24 日,在 Spark+AI 峰会 上,我们很高兴地宣布推出 .NET for Apache Spark。Spark 是一种流行的开源分布式处理引擎,用于分析大型数据集。Spark 可用于处理批量数据、实时流、机器学习...

开源大数据EMR
2019/05/22
0
0
【Spark亚太研究院系列丛书】Spark实战高手之路-第3章Spark架构设计与编程模型第1节②

三、你为什么需要Spark; 你需要Spark的十大理由: 1,Spark是可以革命Hadoop的目前唯一替代者,能够做Hadoop做的一切事情,同时速度比Hadoop快了100倍以上: Logistic regression in Hadoo...

Spark亚太研究院
2014/12/16
449
2

没有更多内容

加载失败,请刷新页面

加载更多

MBTI助你成功,让你更了解你自己

MBTI助你成功,让你更了解你自己 生活总是一个七日接着又一个七日,相信看过第七日的小伙伴,很熟悉这段开场白,人生是一个测试接着又一个测试,上学的时候测试,是为了证明你的智力,可谓从...

蛤蟆丸子
38分钟前
49
0
Android实现App版本自动更新

现在很多的App中都会有一个检查版本的功能。例如斗鱼TV App的设置界面下: 当我们点击检查更新的时候,就会向服务器发起版本检测的请求。一般的处理方式是:服务器返回的App版本与当前手机安...

shzwork
昨天
63
0
npm 发布webpack插件 webpack-html-cdn-plugin

初始化一个项目 npm init 切换到npm源 淘宝 npm config set registry https://registry.npm.taobao.org npm npm config set registry http://registry.npmjs.org 登录 npm login 登录状态......

阿豪boy
昨天
87
0
java基础(16)递归

一.说明 递归:方法内调用自己 public static void run1(){ //递归 run1(); } 二.入门: 三.执行流程: 四.无限循环:经常用 无限递归不要轻易使用,无限递归的终点是:栈内存溢出错误 五.递...

煌sir
昨天
63
0
REST接口设计规范总结

URI格式规范 URI中尽量使用连字符”-“代替下划线”_”的使用 URI中统一使用小写字母 URI中不要包含文件(脚本)的扩展名 URI命名规范 文档(Document)类型的资源用名词(短语)单数命名 集合(Co...

Treize
昨天
69
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部