
SparkCore
SparkCore
小刘同学-很乖
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
SparkCore之RDD编程进阶之累加器
累加器累加器用来对信息进行聚合,通常在向 Spark传递函数时,比如使用 map() 函数或者用 filter() 传条件时,可以使用驱动器程序中定义的变量,但是集群中运行的每个任务都会得到这些变量的一份新的副本,更新这些副本的值也不会影响驱动器中的对应变量。如果我们想实现所有分片处理时更新共享变量的功能,那么累加器可以实现我们想要的效果系统累加器针对一个输入的日志文件,如果我们想计算文件中...原创 2020-08-12 08:07:28 · 390 阅读 · 0 评论 -
SparkCore之文件系统类数据读取与保存
HDFSSpark的整个生态系统与Hadoop是完全兼容的,所以对于Hadoop所支持的文件类型或者数据库类型,Spark也同样支持.另外,由于Hadoop的API有新旧两个版本,所以Spark为了能够兼容Hadoop所有的版本,也提供了两套创建操作接口.对于外部存储创建操作而言,hadoopRDD和newHadoopRDD是最为抽象的两个函数接口,主要包含以下四个参数.输入格式(Input...原创 2020-08-11 08:08:47 · 240 阅读 · 0 评论 -
SparkCore之文件类数据读取与保存
Spark的数据读取及数据保存可以从两个维度来作区分:文件格式以及文件系统。文件格式分为:Text文件、Json文件、Csv文件、Sequence文件以及Object文件;文件系统分为:本地文件系统、HDFS、HBASE以及数据库。Text文件数据读取:textFile(String)scala> val hdfsFile = sc.textFile("hdfs://hadoo...原创 2020-08-10 08:11:17 · 658 阅读 · 0 评论 -
SparkCore之键值对RDD数据分区器详解
Spark目前支持Hash分区和Range分区,用户也可以自定义分区,Hash分区为当前的默认分区,Spark中分区器直接决定了RDD中分区的个数、RDD中每条数据经过Shuffle过程属于哪个分区和Reduce的个数注意:只有Key-Value类型的RDD才有分区器的,非Key-Value类型的RDD分区器的值是None每个RDD的分区ID范围:0~numPartitions-1,决定这...原创 2020-08-07 08:18:19 · 204 阅读 · 0 评论 -
SparkCore之RDD缓存与RDD CheckPoint
RDD缓存RDD通过persist方法或cache方法可以将前面的计算结果缓存,默认情况下 persist() 会把数据以序列化的形式缓存在 JVM 的堆空间中。但是并不是这两个方法被调用时立即缓存,而是触发后面的action时,该RDD将会被缓存在计算节点的内存中,并供后面重用。通过查看源码发现cache最终也是调用了persist方法,默认的存储级别都是仅在内存存储一份,Spark的存...原创 2020-08-06 08:19:47 · 204 阅读 · 0 评论 -
SparkCore之RDD依赖关系
LineageRDD只支持粗粒度转换,即在大量记录上执行的单个操作。将创建RDD的一系列Lineage(血统)记录下来,以便恢复丢失的分区。RDD的Lineage会记录RDD的元数据信息和转换行为,当该RDD的部分分区数据丢失时,它可以根据这些信息来重新运算和恢复丢失的数据分区。读取一个HDFS文件并将其中内容映射成一个个元组scala> val wordAndOne = sc....原创 2020-08-05 08:31:07 · 176 阅读 · 0 评论 -
SparkCore之RDD中的函数传递详解
在实际开发中我们往往需要自己定义一些对于RDD的操作,那么此时需要主要的是,初始化工作是在Driver端进行的,而实际运行程序是在Executor端进行的,这就涉及到了跨进程通信,是需要序列化的。下面我们看几个例子:传递一个方法创建一个类class Search(s:String){//过滤出包含字符串的数据 def isMatch(s: String): Boolean = { ...原创 2020-08-04 08:28:59 · 227 阅读 · 0 评论 -
SparkCore之Action
reduce(func)案例作用:通过func函数聚集RDD中的所有元素,先聚合分区内数据,再聚合分区间数据。需求:创建一个RDD,将所有元素聚合得到结果。创建一个RDD[Int]scala> val rdd1 = sc.makeRDD(1 to 10,2)rdd1: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD...原创 2020-08-03 09:05:38 · 158 阅读 · 0 评论 -
SparkCore之RDD的转换Key-Value类型
partitionBy案例作用:对pairRDD进行分区操作,如果原有的partionRDD和现有的partionRDD是一致的话就不进行分区, 否则会生成ShuffleRDD,即会产生shuffle过程。需求:创建一个4个分区的RDD,对其重新分区创建一个RDDscala> val rdd = sc.parallelize(Array((1,"aaa"),(2,"bbb")...原创 2020-07-31 08:28:32 · 696 阅读 · 1 评论 -
SparkCore之RDD的转换双Value类型交互
union(otherDataset) 案例作用:对源RDD和参数RDD求并集后返回一个新的RDD需求:创建两个RDD,求并集创建第一个RDDscala> val rdd1 = sc.parallelize(1 to 5)rdd1: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[23] at paralleliz...原创 2020-07-30 08:24:17 · 174 阅读 · 0 评论 -
SparkCore之RDD的转换Value类型
RDD整体上分为Value类型和Key-Value类型Value类型map(func)案例作用:返回一个新的RDD,该RDD由每一个输入元素经过func函数转换后组成需求:创建一个1-10数组的RDD,将所有元素*2形成新的RDD创建scala> var source = sc.parallelize(1 to 10)source: org.apache.spark....原创 2020-07-29 08:20:09 · 377 阅读 · 0 评论 -
SparkCore之RDD编程模型与RDD的创建
编程模型在Spark中,RDD被表示为对象,通过对象上的方法调用来对RDD进行转换。经过一系列的transformations定义RDD之后,就可以调用actions触发RDD的计算,action可以是向应用程序返回结果(count, collect等),或者是向存储系统保存数据(saveAsTextFile等)。在Spark中,只有遇到action,才会执行RDD的计算(即延迟计算),这样在运...原创 2020-07-28 08:54:43 · 204 阅读 · 0 评论 -
SparkCore之RDD详细概述
什么是RDDRDD(Resilient Distributed Dataset)叫做分布式数据集,是Spark中最基本的数据抽象。代码中是一个抽象类,它代表一个不可变、可分区、里面的元素可并行计算的集合#RDD的属性一组分区(Partition),即数据集的基本组成单位;一个计算每个分区的函数;RDD之间的依赖关系;一个Partitioner,即RDD的分片函数;一个列表,存储存...原创 2020-07-27 08:53:31 · 294 阅读 · 0 评论