spark 学习(二) RDD及共享变量
声明:本文基于spark的programming guide,并融合自己的相关理解整理而成
概述
- HDFS,HBase 或者其它不论什么可以提供Hadoop输入格式的数据源;
- 驱动程序中已存在的Scala集合;
- 其它的RDD的转换
- broadcast variables, 被用于持久化变量在每一个node的内存中;
- accumulators, 这个变量仅仅可以被累加,
RDD操作
val conf = new SparkConf().setAppName("BasicRDDApp").setMaster("local[4]")
//spark://host:port
val sc = new SparkContext(conf) /**
* parallelized collections
* 将scala的集合数据,并行化成为能够并行计算的分布式数据集
*/
val data = 1 to 1000 toArray
val distData = sc.parallelize(data,10)
//后面的数字是表示将集合切分成多少个块 ,一般是一个CPU 2-4块,通常spark能够自己主动帮你切分 val sum = distData.reduce((a, b) => a+b )
//在reduce的时候才開始真正的运行,driver将任务分布到各个机器上,然后每一个机器单独运行,将计算的结果返回到driver程序
println("sum " + sum) /**
* 读取外部的数据源
* 1.Hadoop支持的数据源 ,比如HDFS,Cassandra,HBase ,Amazon S3
* ##假设文件地址是本地地址的话,那么他应该在集群的每一个节点上都能够被訪问(即:每一个节点上都应该有相同的文件)
* ##textFile的第二个參数控制文件被分割的大小默觉得64MB ,能够设置更大的可是不能设置更小的
*/ val distFile = sc.textFile("file:///usr/local/spark/README.md") //接下来就能够进行相关的操作了
distFile.persist()//持久化 val len = distFile.map(s => 1).reduce((a, b) => a+b)
println(len) val words = distFile.flatMap(l => l.split(" ")).map(w => (w,1)).reduceByKey((a,b) => a+b)
//w => (v1+v2+v3+...)
//map => 1->1 , flatMap => 1 -> 0..n print(words.count())
words foreach println val twords = distFile.flatMap(l => l.split(" ")).map(w => (w,1)).groupByKey()
//分组 w => (v1, v2, v3 ...) twords foreach println
//.map(w => (w,1)).foreach(w => w._1);
RDD的持久化
- 使用方法: 使用persist()或者cache()方法,当中cache()方法默认持久化到内存,persist能够自己选择持久化的层次,在shuffle操作中,spark会自己主动保存中间计算结果,比如reduceBykey
- 作用: RDD的持久化会将会使得每一个节点保存对应的计算部分,以便再次使用该数据集时能够直接使用,加快计算速度
- 怎样选择持久化层次: 假设RDDs 在MEMORY_ONLY下表现良好的话,就选这个层次,这样CPU效率最高
其次MEMORY_ONLY_SER ,其它情况http://spark.apache.org/docs/latest/programming-guide.html
共享变量
val broadcastVar = sc.broadcast("string test")//broadcast variable is readonly val v = broadcastVar.value
println(v) val accum = sc.accumulator(0, "My Accumulator")//value and name sc.parallelize(1 to 1000000).foreach(x => accum+= 1) println(accum.name + ":" + accum.value)
spark 学习(二) RDD及共享变量的更多相关文章
- Spark学习之RDD编程(2)
Spark学习之RDD编程(2) 1. Spark中的RDD是一个不可变的分布式对象集合. 2. 在Spark中数据的操作不外乎创建RDD.转化已有的RDD以及调用RDD操作进行求值. 3. 创建RD ...
- Spark学习之RDD编程总结
Spark 对数据的核心抽象——弹性分布式数据集(Resilient Distributed Dataset,简称 RDD).RDD 其实就是分布式的元素集合.在 Spark 中,对数据的所有操作不外 ...
- Spark学习之RDD
RDD概述 什么是RDD RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据抽象,它代表一个不可变.可分区.里面的元素可并行计算的集合 ...
- Spark学习笔记——RDD编程
1.RDD——弹性分布式数据集(Resilient Distributed Dataset) RDD是一个分布式的元素集合,在Spark中,对数据的操作就是创建RDD.转换已有的RDD和调用RDD操作 ...
- Spark Standalone Mode 多机启动 -- 分布式计算系统spark学习(二)(更新一键启动slavers)
捣鼓了一下,先来个手动挡吧.自动挡要设置ssh无密码登陆啥的,后面开搞. 一.手动多台机链接master 手动链接master其实上篇已经用过. 这里有两台机器: 10.60.215.41 启动mas ...
- spark学习(10)-RDD的介绍和常用算子
RDD(弹性分布式数据集,里面并不存储真正要计算的数据,你对RDD的操作,他会在Driver端转换成Task,下发到Executor计算分散在多台集群上的数据) RDD是一个代理,你对代理进行操作,他 ...
- Spark学习之RDD的理解
转自:http://www.infoq.com/cn/articles/spark-core-rdd/ 感谢张逸老师的无私分享 RDD,全称为Resilient Distributed Dataset ...
- spark学习(RDD案例实战)
练习0(并行化创建RDD) 先启动spark-shell 通过并行化生成rdd scala> val rdd1 = sc.parallelize(List(63,45,89,23,144,777 ...
- Spark 学习(二)
继续学习spark 认真查看了一下${SPARK_HOME}/bin/pyspark 的脚本,原来开启spark 的python 交互挺简单的. 主要操作 export PYTHONPATH=${SP ...
随机推荐
- Hibernate:不容易理解的 lock 和 merge
背景 lock 和 merge 在字面上很容易理解它们的语义,不过它们的实际行为所代表的语义范围要大一点,本文就简单的记录下来,还请朋友们多批评和指正. Lock 官方的注释 /** * Obtain ...
- 数学图形(2.8)Viviani曲线
维维亚尼(Viviani , Vincenzo)意大利数学家.1622年4月5日生于托斯卡纳大区佛罗伦萨:1703年9月22日卒于佛罗伦萨. 这是一个圆柱与一个球相交而生成的曲线. #http://w ...
- 深度Linux Deepin系统安装教程使用体验
很早以前,试用过一次深度的OS,那时深度刚出自己的Linux修改版系统,过了有两年了,准备看看Deepin OS有什么变化,和雨林木风的Start OS比,有什么不同 1.安装的引导菜单和Start ...
- csm pssm +pcf pcss sdsm
这几个shadow算法 pcf是sample时候用的 按照一个mode采样几个位置 根据采样结果 决定0-1 可以是0.234 这样就不是 0或者1 就是soft了 主要讲下pcss 是啥 因为我之 ...
- office excel2013如何启用solver选项
Excel要启用solver很多地方说是要单独安装插件,我认为不同版本可能操作不同.此时office2013已经足够强大,可以通过下面的方法来启用solver 1:在office2013 Excel中 ...
- C-IDE使用指南
HI 您好: 亲爱的学员,本文章是基于C-IDE的入口使用指南,您能够查看demo项目来了解C-IDE详细操作哦~ 如有疑问您可提交反馈来咨询,或扫描下方二维码增加官方微信群.我们会认真对待且具体回 ...
- 【数据压缩】LZW算法原理与源代码解析
转载请注明出处:http://blog.csdn.net/luoshixian099/article/details/50331883 <勿在浮沙筑高台> LZW压缩算法原理很easy,因 ...
- SpringMVC配置全局日期转换器,处理日期转换异常
Spring 3.1.1使用Mvc配置全局日期转换器,处理日期转换异常链接地址: https://www.2cto.com/kf/201308/236837.html spring3.0配置日期转换可 ...
- Linux 内核源码情景分析 chap 2 存储管理 (四)
物理页面的使用和周转 1. 几个术语 1.1 虚存页面 指虚拟地址空间中一个固定大小, 边界与页面大小 4KB 对齐的区间及其内容 1.2 物理页面 与虚存页面相对的, 须要映射到某种物理存储介质上面 ...
- 【NEWS】 ADempiere发布ADempiere 3.8.0路线图【2013年7月28日】
发布源:http://osssme.org/cms/?q=node/17 本以为ADempiere”已死“,但是看到ADempiere的WIKI上大概在从5月28日开始添加WIKI以来,经过多次更新后 ...