Spark 编程模型(中)

创建RDD

方式一:从集合创建RDD

● makeRDD

● Parallelize

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

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

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

● 多文件格式支持:

● 多文件系统支持:

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

基本转换操作2

  •  
  •  

控制操作

● 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操作

 
 

猜你喜欢

转载自www.cnblogs.com/fengyouheng/p/10298244.html