Spark 编程模型(中)

举报
Smy1121 发表于 2019/06/22 14:57:39 2019/06/22
3.2k+ 0 0
【摘要】 创建RDD

创建RDD

方式一:从集合创建RDD

● makeRDD

● Parallelize

注意:makeRDD可以指定每个分区perferredLocations参数parallelize则没有。

方式二:读取外部存储创建RDD

Spark与Hadoop完全兼容,所以对Hadoop所支持的文件类型或者数据库类型,Spark同样支持。

● 多文件格式支持:

image.png

● 多文件系统支持:

1)本地文件系统

2)S3

3)HDFS

● 数据库

1)JdbcRDD

2)spark-cassandra-connector(datastax/spark-cassandra-connector)

3)org.apache.hadoop.hbase.mapreduce.TableInputFormat(SparkContext.newAPIHadoopRDD)

4)Elasticsearch-Hadoop

   

transformation操作

惰性求值

● RDD 的转化操作都是惰性求值的。这意味着在被调用行动操作之前Spark 不会开始计算

● 读取数据到RDD的操作也是惰性的

● 惰性求值的好处:

Spark 使用惰性求值可以把一些操作合并到一起来减少计算数据的步骤。在类似 Hadoop MapReduce 的系统中,开发者常常花费大量时间考虑如何把操作组合到一起,以减少MapReduce 的周期数。

而在Spark 中,写出一个非常复杂的映射并不见得能比使用很多简单的连续操作获得好很多的性能。因此,用户可以用更小的操作来组织他们的程序,这样也使这些操作更容易管理。

转换操作

● RDD 的转化操作是返回新RDD 的操作

● 我们不应该把RDD 看作存放着特定数据的数据集,而最好把每个RDD 当作我们通过转化操作构建出来的、记录如何计算数据的指令列表。

基本转换操作1

image.png

基本转换操作2

image.png

控制操作

● persist操作,可以将RDD持久化到不同层次的存储介质,以便后续操作重复使用。

1)cache:RDD[T]

2)persist:RDD[T]

3)Persist(level:StorageLevel):RDD[T]

● checkpoint

将RDD持久化到HDFS中,与persist操作不同的是checkpoint会切断此RDD之前的依赖关系,而persist依然保留RDD的依赖关系。

注意:控制操作的细节会在后续章节专门讲解

action操作

image.png

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。