大家好,我是不温卜火,是一名计算机学院大数据专业大二的学生,昵称来源于成语—
不温不火
,本意是希望自己性情温和
。作为一名互联网行业的小白,博主写博客一方面是为了记录自己的学习过程,另一方面是总结自己所犯的错误希望能够帮助到很多和自己一样处于起步阶段的萌新。但由于水平有限,博客中难免会有一些错误出现,有纰漏之处恳请各位大佬不吝赐教!暂时只有csdn这一个平台,博客主页:https://buwenbuhuo.blog.csdn.net/
此篇为大家带来的是Spark Core中编程模型的理解与RDD的创建
上一篇博客什么是RDD?一文带你快速了解Spark中RDD的概念!为大家带来了RDD的概述之后。本篇博客,博主将继续前进,为大家带来RDD编程系列。
该系列第一篇,为大家带来的是编程模型的理解与RDD的创建!
在 Spark 中,RDD 被表示为对象,通过对象上的方法调用来对 RDD 进行转换。
经过一系列的transformations
定义 RDD 之后,就可以调用 actions 触发 RDD 的计算
action可以是向应用程序返回结果(count, collect等),或者是向存储系统保存数据(saveAsTextFile
等)。
在Spark中,只有遇到action,才会执行 RDD 的计算(即延迟计算),这样在运行时可以通过管道的方式传输多个转换。
要使用 Spark,开发者需要编写一个 Driver 程序,它被提交到集群以调度运行 Worker
Driver 中定义了一个或多个 RDD,并调用 RDD 上的 action,Worker 则执行 RDD 分区计算任务。
在Spark中创建RDD的创建方式可以分为三种:
scala> val arr = Array(10,20,30,40,50,60)
arr: Array[Int] = Array(10, 20, 30, 40, 50, 60)
scala> val rdd1 = sc.parallelize(arr)
rdd1: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[0] at parallelize at <console>:26
makeRDD和parallelize是一样的.
scala> val rdd1 = sc.makeRDD(Array(10,20,30,40,50,60))
rdd1: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[0] at makeRDD at <console>:24
说明:
parallelize
和makeRDD
还有一个重要的参数就是把数据集切分成的分区数. Spark 也可以从任意 Hadoop 支持的存储数据源来创建分布式数据集.
可以是本地文件系统, HDFS, Cassandra, HVase, Amazon S3 等等.
Spark 支持 文本文件, SequenceFiles, 和其他所有的 Hadoop InputFormat.
scala> var distFile = sc.textFile("words.txt")
distFile: org.apache.spark.rdd.RDD[String] = words.txt MapPartitionsRDD[1] at textFile at <console>:24
scala> distFile.collect
res0: Array[String] = Array(buwenbuhuo hello, hello world, how are you, zbc ltgb)
说明:
url
可以是本地文件系统文件, hdfs://...
, s3n://...
等等textFile("/my/directory"),textFile("/my/directory/*.txt"), and textFile("/my/directory/*.gz")
.128M
). 可以传递一个大于块数的分区数, 但是不能传递一个比块数小的分区数.就是通过 RDD 的各种转换算子来得到新的 RDD.
本次的分享就到这里了,
好书不厌读百回,熟读课思子自知。而我想要成为全场最靓的仔,就必须坚持通过学习来获取更多知识,用知识改变命运,用博客见证成长,用行动证明我在努力。
如果我的博客对你有帮助、如果你喜欢我的博客内容,请“点赞” “评论”“收藏”
一键三连哦!听说点赞的人运气不会太差,每一天都会元气满满呦!如果实在要白嫖的话,那祝你开心每一天,欢迎常来我博客看看。
码字不易,大家的支持就是我坚持下去的动力。点赞后不要忘了关注
我哦!