在上一篇文章中,讲了Spark的简单应用开发,在构建数据源的时候,返回了一个RDD对象,所有对数据的操作,都是在这个对象中进行操作,RDD对象是Spark中至为核心的组件,这篇文章就一起来谈谈Spark RDD (resilient distributed dataset)什么是RDD?RDD( resilient distributed dataset ) 弹性分布式数据集;RDD代表是一个不可            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-01-08 13:17:35
                            
                                71阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            什么是RDD●为什么要有RDD?在许多迭代式算法(比如机器学习、图算法等)和交互式数据挖掘中,不同计算阶段之间会重用中间结果,即一个阶段的输出结果会作为下一个阶段的输入。但是,之前的MapReduce框架采用非循环式的数据流模型,把中间结果写入到HDFS中,带来了大量的数据复制、磁盘IO和序列化开销。且这些框架只能支持一些特定的计算模式(map/reduce),并没有提供一种...            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2021-12-28 18:06:29
                            
                                62阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            什么是RDD●为什么要有RDD?在许多迭代式算法(比如机器学习、图算法等)和交互式数据挖掘中,不同计算阶段之间会重用中间结果,即一个阶段的输出结果会作为下一个阶段的输入。但是,之前的MapReduce框架采用非循环式的数据流模型,把中间结果写入到HDFS中,带来了大量的数据复制、磁盘IO和序列化开销。且这些框架只能支持一些特定的计算模式(map/reduce),并没有提供一种...            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2022-02-16 16:24:58
                            
                                60阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            RDD通过persist方法或cache方法可以将前面的计算结果缓存,默认情况下 persist() 会把数据以序列化的形式缓存在 JVM 的堆空间中。但是并不是这两个方法被调用时立即缓存,而是触发后面的action时,该RDD将会被缓存在计算节点的内存中,并供后面重用。通过查看源码发现cache最终也是调用了persist方法,默认的存储级别都是仅在内存存储一份,Spark的存储级别...            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2021-12-28 18:06:28
                            
                                26阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            1 LineageRDD只支持粗粒度转换,即在大量记录上执行的单个操作。将创建RDD的一系列Lineage(血统)记录下来,以便恢复丢失的分区。RDD的Lineage会记录RDD的元数据信息和转换行为,当该RDD的部分分区数据丢失时,它可以根据这些信息来重新运算和恢复丢失的数据分区。(1)读取一个HDFS文件并将其中内容映射成一个个元组scala> val wordAndOne = s...            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2021-12-28 18:06:28
                            
                                40阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            RDD通过persist方法或cache方法可以将前面的计算结果缓存,默认情况下 persist() 会把数据以序列化的形式缓存在 JVM 的堆空间中。但是并不是这两个方法被调用时立即缓存,而是触发后面的action时,该RDD将会被缓存在计算节点的内存中,并供后面重用。通过查看源码发现cache最终也是调用了persist方法,默认的存储级别都是仅在内存存储一份,Spark的存储级别...            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2022-02-16 16:24:54
                            
                                63阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            1 什么是RDDRDD(Resilient Distributed Dataset)叫做分布式数据集,是Spark中最基本的数据抽象。代码中是一个抽象类,它代表一个不可变、            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2022-11-11 10:42:45
                            
                                78阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            1 LineageRDD只支持粗粒度转换,即在大量记录上执行的单个操作。将创建RDD的一系列Lineage(血统)记录下来,以便恢复丢失的分区。RDD的Lineage会记录RDD的元数据信息和转换行为,当该RDD的部分分区数据丢失时,它可以根据这些信息来重新运算和恢复丢失的数据分区。(1)读取一个HDFS文件并将其中内容映射成一个个元组scala> val wordAndOne = s...            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2022-02-16 16:24:55
                            
                                49阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            一 RDD依赖关系1 LineageRDD只支持粗粒度转换,即在大量记录上执行的单个操作。将创建RDD的一系列Lineage            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2022-11-11 10:37:09
                            
                                77阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            在Spark中创建RDD的创建方式可以分为三种:从集合中创建RDD;从外部存储创建RDD;从其他RDD创建。1 从集合            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2022-11-11 10:35:36
                            
                                43阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            RDD特点RDD表示只读的分区的数据集,对RDD进行改动,只能通过RDD的转换操作,由一个RDD得到一个新的RDD,新的RDD包含了从其他RDD衍生所必需的信息。RDDs之间存在依赖,RDD的执行是按照血缘关系延时计算的。如果血缘关系较长,可以通过持久化RDD来切断血缘关系。分区RDD逻辑上是分区的,每个分区的数据是抽象存在的,计算的时候会通过一个compute函数得到每个分区的数据。...            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2021-12-28 18:06:28
                            
                                99阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            1 累加器累加器用来对信息进行聚合,通常在向 Spark传递函数时,比如使用 map() 函数或者用 filter() 传条件时,可以使入的日志...            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2022-11-11 10:37:50
                            
                                52阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            在Spark中,RDD被表示为对象,通过对象上的方法调用来对RDD进行转换。经过一系列的transformations定义RDD之            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2022-11-11 10:42:56
                            
                                51阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            RDD特点RDD表示只读的分区的数据集,对RDD进行改动,只能通过RDD的转换操作,由一个RDD得到一个新的RDD,新的RDD包含了从其他RDD衍生所必需的信息。RDDs之间存在依赖,RDD的执行是按照血缘关系延时计算的。如果血缘关系较长,可以通过持久化RDD来切断血缘关系。分区RDD逻辑上是分区的,每个分区的数据是抽象存在的,计算的时候会通过一个compute函数得到每个分区的数据。...            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2022-02-16 16:24:55
                            
                                27阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            在实际开发中我们往往需要自己定义一些对于RDD的操作,那么此时需要主要的是,初始化工作是在Driver端进行的,而实际运行程序是在Executor端进行的,这就涉及到了跨进程通信,是需要序列化的。下面我们看几个例子:1 传递一个方法1.创建一个类class Search(query:String){//过滤出包含字符串的数据 def isMatch(s: String)...            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2022-11-11 10:36:45
                            
                                31阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            Spark目前支持Hash分区和Range分区,用户也可以自定义分区,Hash            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2022-11-11 10:37:24
                            
                                29阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            Spark目前支持Hash分区和Range分区,用户也可以自定义分区,Hash分区为当前的默认分区,Spark中分区器直接决定了RDD中分区的个数、RDD中每条数据经过Shuffle过程属于哪个分区和Reduce的个数注意:(1)只有Key-Value类型的RDD才有分区器的,非Key-Value类型的RDD分区器的值是None(2)每个RDD的分区ID范围:0~numPartitions...            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2021-12-28 18:06:28
                            
                                75阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            Spark目前支持Hash分区和Range分区,用户也可以自定义分区,Hash分区为当前的默认分区,Spark中分区器直接决定了RDD中分区的个数、RDD中每条数据经过Shuffle过程属于哪个分区和Reduce的个数注意:(1)只有Key-Value类型的RDD才有分区器的,非Key-Value类型的RDD分区器的值是None(2)每个RDD的分区ID范围:0~numPartitions...            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2022-02-16 15:56:14
                            
                                68阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            # 使用Spark处理RDD数据:从Make RDD到Spark Core
Apache Spark是一个强大的大数据处理框架,它提供了多种数据处理功能,包括对RDD(弹性分布式数据集)的支持。在本文中,我们将讨论如何在Spark中创建RDD,并使用Spark Core对其进行处理。我们将通过一个具体的例子来展示这一过程,包括代码示例和饼状图的可视化。
## 问题描述
假设我们有一个包含用户            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2024-07-15 15:56:27
                            
                                1860阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            Spark Core包含Spark的基本功能,如内存计算、任务调度、部署模式、故障恢复、存储管理等,SparkCore底层是RDD,即弹性分布式分布式数据集,底层又分为多个partition(分区),它本身是不存数据的,只是计算的时候数据存在于RDD中,RDD的产生意味着调用了算子。这样一系列通过调用算子生成的RDD,最终会生成DAG有向无环图。 在将sparkcore之前我们先看看sp            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-09-10 17:10:13
                            
                                76阅读
                            
                                                                             
                 
                
                                
                    