rdd

Spark中RDD的Key-Value型Transformation算子操作(二)

匿名 (未验证) 提交于 2019-12-03 00:21:02
Spark算子大致上可分为三大类算子: Value数据类型的Transformation算子,这种变换不触发提交作业,针对处理的数据项是Value型的数据。 Key-Value数据类型的Transformation算子,这种变换不触发提交作业,针对处理的数据项是Key-Value型的数据。 Action算子,这类算子会触发SparkContext提交作业。 1、mapValues mapValues是针对[K,V]中对V的值进行map 2、combineByKey 使用用户设置好的聚合函数对每个Key中对Value进行组合(combine),可以将输入类型为 RDD[(K,V)] 转成RDD[(K,C)] 3、reduceByKey 对元素为KV对的RDD中Key相同对元素对Value进行binary_function的reduce操作,因此Key相同的多个元素的值被reduce为一个值,然后与原RDD中的Key组成一个新的KV对 4、partitionBy 对RDD进行分区操作 5、cogroup cogroup指对两个RDD中对KV元素,每个RDD中相同Key中对元素中的元素分别聚合成一个集合 6、join 对两个需要连接对RDD进行cogroup函数操作 7、leftOutJoin 8、rightOutJoin 转载请标明出处: Spark中RDD的Key

Spark JSON text field to RDD

只愿长相守 提交于 2019-12-03 00:20:23
I've got a cassandra table with a field of type text named snapshot containing JSON objects: [identifier, timestamp, snapshot] I understood that to be able to do transformations on that field with Spark, I need to convert that field of that RDD to another RDD to make transformations on the JSON schema. Is that correct? How should I proceed to to that? Edit: For now I managed to create an RDD from a single text field: val conf = new SparkConf().setAppName("signal-aggregation") val sc = new SparkContext(conf) val sqlContext = new SQLContext(sc) val snapshots = sc.cassandraTable[(String, String,

Spark core中的cache,缓存级别详解

匿名 (未验证) 提交于 2019-12-03 00:18:01
本次我们将学习Spark core中的cache操作以及和 persist的区别。首先大家可能想到的是cache到底是什么呢?他有什么作用呢?我们可以带着这两个问题进行下面的学习。 本文结构: 1. cache的产生背景 2. cache的作用 3. 源码解析cache于persist的区别,以及缓存级别详解 我们先做一个简单的测试读取一个本地文件做一次collect操作 val rdd=sc.textFile( "file:///home/hadoop/data/input.txt" ) val rdd=sc.textFile( "file:///home/hadoop/data/input.txt" ) 上面我们进行了两次相同的操作,观察日志我们发现这样一句话 Submitting ResultStage 0 (file:///home/hadoop/data/input.txt MapPartitionsRDD[1] at textFile at <console>:25), which has no missing parents ,每次都要去本地读取input.txt文件,这里大家能想到存在什么问题吗? 如果我的文件很大,每次都对相同的RDD进行同一个action操作,那么每次都要到本地读取文件,得到相同的结果。不断进行这样的重复操作,耗费资源浪费时间啊

Spark RDD 算子总结

大城市里の小女人 提交于 2019-12-03 00:10:19
Spark算子总结 算子分类 Transformation(转换) 转换算子 含义 map(func) 返回一个新的RDD,该RDD由每一个输入元素经过func函数转换后组成 filter(func) 过滤, 返回一个新的RDD, 该RDD由经过func函数计算后返回值为true的输入元素组成 flatMap(func) 类似于map,但是每一个输入元素可以被映射为0或多个输出元素(所以func应该返回一个序列,而不是单一元素) mapPartitions(func) 类似于map,但独立地在RDD的每一个分片上运行,因此在类型为T的RDD上运行时,func的函数类型必须是Iterator[T] => Iterator[U] mapPartitionsWithIndex(func) 类似于mapPartitions,但func带有一个整数参数表示分片的索引值,因此在类型为T的RDD上运行时,func的函数类型必须是(Int, Interator[T]) => Iterator[U] union(otherDataset) 对源RDD和参数RDD求并集后返回一个新的RDD Intersection(otherDataset) 对源RDD和参数RDD求交集后返回一个新的RDD groupByKey([numTasks]) 在一个(K,V)的RDD上调用,返回一个(K, Iterator

spark笔记之RDD编程API

匿名 (未验证) 提交于 2019-12-03 00:09:02
4.1RDD的算子分类 Transformation(转换):根据数据集创建一个新的数据集,计算后返回一个新RDD;例如:一个rdd进行map操作后生了一个新的rdd。 Action(动作):对rdd结果计算后返回一个数值value给驱动程序; 例如:collect算子将数据集的所有元素收集完成返回给驱动程序。 4.2Transformation RDD中的所有转换都是延迟加载的,也就是说,它们并不会直接计算结果。相反的,它们只是记住这些应用到基础数据集(例如一个文件)上的转换动作。只有当发生一个要求返回结果给Driver的动作时,这些转换才会真正运行。这种设计让Spark更加有效率地运行。 常用的Transformation: 4.3Action 转载请标明出处: spark笔记之RDD编程API 来源:51CTO 作者: qq5d3e5bae55f08 链接:https://blog.51cto.com/14473726/2438808

SPARK之分区器

匿名 (未验证) 提交于 2019-12-02 23:57:01
Spark目前支持Hash分区和Range分区,用户也可以自定义分区,Hash分区为当前的默认分区,Spark中分区器直接决定了RDD中分区的个数、RDD中每条数据经过Shuffle过程属于哪个分区和Reduce的个数 只有Key-Value类型的RDD才有分区器的,非Key-Value类型的RDD分区器的值是None 每个RDD的分区ID范围:0~numPartitions-1,决定这个值是属于那个分区的 来源:博客园 作者: xiangyuguan 链接:https://www.cnblogs.com/xiangyuguan/p/11456801.html

reduceByKey和groupByKey的区别

匿名 (未验证) 提交于 2019-12-02 23:57:01
reduceByKey:按照key进行聚合,在shuffle之前有combine(预聚合)操作,返回结果是RDD[k,v] groupByKey:按照key进行分组,直接进行shuffle 建议使用reduceByKey。但是需要注意是否会影响业务逻辑 来源:博客园 作者: xiangyuguan 链接:https://www.cnblogs.com/xiangyuguan/p/11456759.html

1. Spark Streaming概述

匿名 (未验证) 提交于 2019-12-02 23:57:01
1.1 什么是Spark Streaming                     和Spark基于RDD的概念很相似,Spark Streaming使用离散化流(discretized stream)作为抽象表示,叫作DStream。DStream是随时间推移而收到的数据的序列。在内部,每个时间区间收到的数据都作为RDD存在,而DStream是由这些RDD所组成的序列(因此得名“离散化”)              1. 易用              2. 容错              3. 易整合到Spark体系        1.3 Spark与Storm的对比 Spark Storm 开发语言:Scala 开发语言:Clojure 编程模型:DStream 编程模型:Spout/Bolt        来源:博客园 作者: 铖歌 链接:https://www.cnblogs.com/zhanghuicheng/p/11226849.html

RDD广播变量

匿名 (未验证) 提交于 2019-12-02 23:52:01
能不能将一个RDD使用广播变量广播出去? 不能,因为RDD是不存储数据的。可以将RDD的结果广播出去 广播变量只能在Driver端定义,不能在Executor端定义 在Driver端可以修改广播变量的值,在Executor端无法修改广播变量的值

spark 术语

匿名 (未验证) 提交于 2019-12-02 23:49:02
ClusterManager:在Standalone模式中即为Master(主节点),控制整个集群,监控Worker。在YARN模式中为资源管理器 Worker:从节点,负责控制计算节点,启动Executor。在YARN模式中为NodeManager,负责计算节点的控制 Driver:运行Application的main()函数并创建SparkContext Executor:执行器,在worker node上执行任务的组件、用于启动线程池运行任务。每个Application拥有独立的一组Executors SparkContext:整个应用的上下文,控制应用的生命周期 RDD:Spark的基本计算单元,一组RDD可形成执行的有向无环图RDD Graph DAG Scheduler:实现将Spark作业分解成一到多个Stage,每个Stage根据RDD的Partition个数决定Task的个数,然后生成相应的Task set放到TaskScheduler中 TaskScheduler:将任务(Task)分发给Executor执行 Stage:一个Spark作业一般包含一到多个Stage Task:一个Stage包含一到多个Task,通过多个Task实现并行运行的功能 Transformations:Transformations操作是Lazy的