Spark
文章平均质量分 80
Neroiiey
这个作者很懒,什么都没留下…
展开
-
3.5 RDD持久化机制
从上述代码可以看出,cache()方法调用了无参的persist()方法,两者的默认存储级别都为MEMORY_ONLY,但cache()方法不可更改存储级别,而persist()方法可以通过参数自定义存储级别。Spark中重要的功能之一是可以将某个RDD中的数据保存到内存或者磁盘中,每次需要对这个RDD进行算子操作时,可以直接从内存或磁盘中取出该RDD的持久化数据,而不需要从头计算才能得到这个RDD。如果内存不够,就将未缓存的分区存储在磁盘上,并在需要这些分区时从磁盘读取。原创 2023-06-14 14:15:22 · 1143 阅读 · 0 评论 -
3.5 RDD持久化机制
从上述代码可以看出,cache()方法调用了无参的persist()方法,两者的默认存储级别都为MEMORY_ONLY,但cache()方法不可更改存储级别,而persist()方法可以通过参数自定义存储级别。Spark中重要的功能之一是可以将某个RDD中的数据保存到内存或者磁盘中,每次需要对这个RDD进行算子操作时,可以直接从内存或磁盘中取出该RDD的持久化数据,而不需要从头计算才能得到这个RDD。如果内存不够,就将未缓存的分区存储在磁盘上,并在需要这些分区时从磁盘读取。原创 2023-06-14 14:11:01 · 1234 阅读 · 0 评论 -
3.4 理解RDD依赖
一个父RDD的一个分区不可能对应一个子RDD的多个分区。对一个RDD进行reduceByKey()操作,RDD中相同key的所有记录将进行聚合,而key相同的所有记录可能不在同一个分区中,甚至不在同一个节点上,但是该操作必须将这些记录聚集到一起进行计算才能保证结果准确,因此reduceByKey()操作会产生Shuffle,也会产生宽依赖。在Spark中,对RDD的每一次转化操作都会生成一个新的RDD,由于RDD的懒加载特性,新的RDD会依赖原有RDD,因此RDD之间存在类似流水线的前后依赖关系。原创 2023-06-14 14:12:08 · 753 阅读 · 0 评论 -
3.3 掌握RDD分区
在分布式程序中,网络通信的开销是很大的,因此控制数据分布以获得最少的网络传输可以极大的提升程序的整体性能,Spark程序可以通过控制RDD分区方式来减少通信开销。textFile()方法通常用于读取HDFS中的文本文件,使用该方法创建RDD时,Spark会对文件进行分片操作(类似于MapReduce的分片,实际上调用的是MapReduce的分片接口),分片操作完成后,每个分区将存储一个分片的数据,因此分区的数量等于分片的数量。RDD各个分区中的数据可以并行计算,因此分区的数量决定了并行计算的粒度。原创 2023-06-14 14:09:50 · 1189 阅读 · 0 评论 -
Spark大数据处理学习笔记(3.2.2)掌握RDD算子
takeOrdered(n, [ordering])算子返回RDD中的前n个元素,并以自然顺序或自定义的比较器顺序进行排序。List集合中存储的是键值对形式的元组,使用该List集合创建一个RDD,然后对其进行countByKey的计算。take(n)算子返回RDD的前n个元素(同时尝试访问最少的partitions),返回结果是无序的,测试使用。countByKey()算子按键统计RDD键值出现的次数,返回由键值和次数构成的映射。计算12 + 22 + 32 + 42 + 5**2的值(先映射,后归约)原创 2023-06-14 14:08:55 · 1078 阅读 · 0 评论 -
Spark大数据处理学习笔记(3.2.1)掌握RDD算子
例如,rdd1的元素以(k,v)表示,rdd2的元素以(k, w)表示,进行左外连接时将以rdd1为基准,rdd2中的k与rdd1的k相同的元素将连接到一起,生成的结果形式为(k, (v, Some(w))。例如,rdd1的元素以(k, v)表示,rdd2的元素以(k, w)表示,执行rdd1.cogroup(rdd2)生成的结果形式为(k, (Iterable, Iterable))。val scores = List((“张钦林”, 78), (“张钦林”, 90), (“张钦林”, 76),原创 2023-06-14 14:07:39 · 1386 阅读 · 0 评论 -
Spark大数据处理学习笔记(2.4)IDEA开发词频统计项目
从Scala官网下载Scala2.12.15 - https://www.scala-lang.org/download/2.12.15.html。val wc = sc.textFile(inputPath) // 读取文件,得到RDD。创建/home/test.txt文件,上传到HDFS指定目录。, 1)) // 针对每个单词得到二元组(word, 1).split(" ")) // 扁平化映射,得到单词数组。.split(" ")) // 扁平化映射,得到单词数组。原创 2023-06-14 14:01:25 · 1489 阅读 · 0 评论 -
Spark大数据处理学习笔记(3.1)掌握RDD的创建
注意:访问本地文件,必须加file://前缀,否则系统会认为是访问hdfs://master:9000/home/test.txt,从而会报错。执行命令:val rdd = sc.textFile(“hdfs://master:9000/park/test.txt”)执行命令:val rdd = sc.textFile(“hdfs://master:9000/park/test.txt”)执行命令:val rdd = sc.textFile(“file:///home/test.txt”)原创 2023-06-14 13:59:50 · 1588 阅读 · 0 评论 -
Spark大数据处理学习笔记(2.2)搭建Spark Standalone集群
读取HDFS上的文件,创建RDD,执行命令:val rdd = sc.textFile(“hdfs://master:9000/park/test.txt”)(说明:val rdd = sc.textFile(“/park/test.txt”)读取的依然是HDFS上的文件,绝对不是本地文件)进入spark配置目录后,执行命令:cp spark-env.sh.template spark-env.sh与vim spark-env.sh。原创 2023-06-14 13:41:32 · 1917 阅读 · 0 评论