Spark基础与Java Api介绍
原创文章,转载请注明: 转载自http://www.cnblogs.com/tovin/p/3832405.html
一、Spark简介
1、什么是Spark
发源于AMPLab实验室的分布式内存计算平台,它克服了MapReduce在迭代式计算和交互式计算方面的不足。
相比于MapReduce,Spark能充分利用内存资源提高计算效率。
2、Spark计算框架
Driver程序启动很多workers,然后workers在(分布式)文件系统中读取数据后转化为RDD(弹性分布式数据集),最后对RDD在内存中进行缓存和计算






(2)优化执行计划
4、Spark Api语言支持
(1)Scala
(2)Java
(3)Python
5、怎么运行Spark
Local本地模式、Spark独立集群、Mesos、Yarn-Standalone、Yarn-Client
二、编程模型
1、RDD(弹性分布式数据集)是什么
只读的、分块的数据记录集合
可以通过读取来不同存储类型的数据进行创建、或者通过RDD操作生成(map、filter操作等)
使用者只能控制RDD的缓存或者分区方式
RDD的数据可以有多种类型存储方式(可(序列化)存在内存或硬盘中)
2、RDD 存储类型
RDD可以设置不同类型存储方式,只存硬盘、只存内存等。

3、RDD操作
Transformation:根据已有RDD创建新的RDD数据集build

JavaSparkContext sc = new JavaSparkContext("local","SparkTest");
接受2个参数:
第一个参数表示运行方式(local、yarn-client、yarn-standalone等)
第二个参数表示应用名字

执行结果:对list1数据集每行数据用","进行切分


执行结果:对list1数据集每行数据用","进行切分

(3)filter
filter对每行数据执行过滤操作,返回true则保留,返回false则过滤该行数据

执行结果:过滤list1数据集中包含‘a’字符的行

(4)union
union操作对两个RDD数据进行合并。与SQL中的union一样



执行结果:对pair1RDD数据集按key进行group by

(6)reduceByKey
reduceByKey对pair中的key先进行group by操作,然后根据函数对聚合数据后的数据操作

执行结果:先group by操作后进行concat

(7)mapValues
mapValues操作对pair中的value部分执行函数里面的操作

执行结果:对pair1RDD中value部分加上test字符串

(8)join
join与sql中join含义一致,将两个RDD中key一致的进行join连接操作

执行结果:对pair1RDD与pair2RDD按key进行join

(9)cogroup
cogroup对两个RDD数据集按key进行group by,并对每个RDD的value进行单独group by

执行结果:对pair1RDD与pair2RDD按key进行cogroup

6、RDD数据如何输出
count:统计输出数据行数

collect:输出所有输出数据

save:保存输出数据至外部存储

7、WordCount实例

执行结果:

8、广播变量& 累加器
Broadcast variables(广播变量)
Accumulators(累加器)
三、调度机制
1、DAG Scheduler
为每个job分割stage,同时会决定最佳路径,并且DAG Scheduler会记录哪个RDD或者stage的数据被checkpoint,从而找到最优调度方案 (transformations是延迟执行的原因)

2、DAG Scheduler优化
单个Stage内Pipeline执行
3、窄依赖& 宽依赖
窄依赖:每个子分区只依赖有限数目的父分区
宽依赖:每个子分区只依赖所有的父分区

4、Stage
调度器会在产生宽依赖的地方形成一个stage,同一个stage内的RDD操作会流式执行,不会发生数据迁移。

rdd join操作属于宽依赖,从spark产生的日志可以看出需要分3个stage执行

rdd flatMap、Map操作属于窄依赖,从spark产生的日志可以看出需要分1个stage执行

5、Shuffle
每个RDD都可以选择Partitioner进行shuffle操作
shuffle需要在node之间移动数据,会影响spark执行效率,应该尽量避免RDD操作中发生shuffle。

原创文章,转载请注明: 转载自http://www.cnblogs.com/tovin/p/3832405.html

Spark基础与Java Api介绍的更多相关文章
- _00017 Kafka的体系结构介绍以及Kafka入门案例(0基础案例+Java API的使用)
博文作者:妳那伊抹微笑 itdog8 地址链接 : http://www.itdog8.com(个人链接) 博客地址:http://blog.csdn.net/u012185296 博文标题:_000 ...
- HDFS基础和java api操作
1. 概括 适合一次写入多次查询情况,不支持并发写情况 通过hadoop shell 上传的文件存放在DataNode的block中,通过linux shell只能看见block,看不见文件(HDFS ...
- spark 快速入门 java API
Spark的核心就是RDD,对SPARK的使用入门也就是对RDD的使用,包括action和transformation 对于Java的开发者,单单看文档根本是没有办法理解每个API的作用的,所以每个S ...
- HBase总结(十一)hbase Java API 介绍及使用示例
几个相关类与HBase数据模型之间的对应关系 java类 HBase数据模型 HBaseAdmin 数据库(DataBase) HBaseConfiguration HTable 表(Table) H ...
- hbase Java API 介绍及使用示例
几个相关类与HBase数据模型之间的对应关系 java类 HBase数据模型 HBaseAdmin 数据库(DataBase) HBaseConfiguration HTable 表(Table) ...
- HDFS JAVA API介绍
注:在工程pom.xml 所在目录,cmd中运行 mvn package ,打包可能会有两个jar,名字较长的是包含所有依赖的重量级的jar,可以在linux中使用 java -cp 命令来跑.名字较 ...
- HBase总结(十一)hbase Java API 介绍及使用演示样例
几个相关类与HBase数据模型之间的相应关系 java类 HBase数据模型 HBaseAdmin 数据库(DataBase) HBaseConfiguration HTable 表(Table) H ...
- 第一阶段:Java基础 1.JAVA开发介绍---6. Java基本数据类型
Java 的两大数据类型: 内置数据类型(基本数据类型) 引用数据类型 本数据类型: Java语言提供了八种基本类型.六种数字类型,一种字符类型,还有一种布尔型. byte,short,int,lon ...
- 第一阶段:Java基础 1.JAVA开发介绍---5. Java的注释,标识符、标识符的命名规范
1.java注释 java中有三种注释方式,单行注释,多行注释,文档注释. (1).单行注释:快捷键Ctrl+/再次按撤销注释, (2).多行注释:Ctrl+shift+/ 撤销Ctrl+shift+ ...
随机推荐
- mongoDB 3.0 安全权限访问控制
MongoDB3.0权限,啥都不说了,谷歌百度出来的全是错的.先安装好盲沟,简单的没法说. 首先,不使用 —auth 参数,启动 mongoDB: mongodb-linux-i686-3.0.0/b ...
- 数据类型 swift
1整形 Int,Int8,Int16,Int32,Int64 UInt,UInt8,UInt16,UInt32,UInt64 其中Int,UInt始终和当前平台的原生字长相同(32位机,64位机) 查 ...
- 莫名戳中"肋骨"的文章
1 起初,我们总是会害怕,害怕不能得到自己渴望的物质生活,害怕遇不到那个好好爱自己的人,害怕失去青春也换不回事业上的进步,害怕会做下一个让自己悔恨的决定,可这一路,我们就是这样踩着自己的害怕和悔恨走来 ...
- C#开源大全--汇总(转)
商业协作和项目管理平台-TeamLab 网络视频会议软件-VMukti 驰骋工作流程引擎-ccflow [免费]正则表达式测试工具-Regex-Tester Windows-Phone-7-SDK E ...
- 【转】eclipse技巧2
谈谈eclipse使用技巧二 上节说道了怎么使用eclipse使您事半功倍.这节告诉您怎么用eclipse练成火眼金睛. ①借你一双火眼金睛让类的层次结构一目了然让你阅读代码如虎添翼 一个好的类的层次 ...
- python 数据结构-元组tuple
tuple0=() #空 tuple1="wo", #元组中包括单个元素用, tuple2="monkey","cat","chi ...
- JavaScript的DOM操作(1)
1.DOM的基本概念 DOM是文档对象模型,这种模型为树模型:文档是指标签文档:对象是指文档中每个元素:模型是指抽象化的东西. 2.Window对象操作 一.属性和方法: 属性(值或者子对象): op ...
- codeforces 161D Distance in Tree 树形dp
题目链接: http://codeforces.com/contest/161/problem/D D. Distance in Tree time limit per test 3 secondsm ...
- vasprintf的实现
有些系统,例如AIX,没有vasprintf和asprintf ,如果是做porting,有时需要写一个简单的代替. 代码如下: #if !defined(HAVE_VASPRINTF) #if de ...
- 使用CSS时间打点的Loading效果的教程
基于box-shadow实现的打点效果 理论上,box-shadow可以实现任意的图形效果,自然我们可以利用box-shadow生成我们的点效果,然后通过animation控制不同时间点点的数目就可以 ...