说明
一旦 RDD 创建成功, 就可以通过并行的方式去操作这个分布式的数据集了.
parallelize和makeRDD算子效果是一模一样的.
parallelize和makeRDD还有一个重要的参数就是把数据集切分成的分区数.
Spark 会为每个分区运行一个任务(task). 正常情况下, Spark 会自动的根据你的集群来设置分区数
案例
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}
object CreateRDD {
def main(args: Array[String]): Unit = {
// 1. 得到SparkContext
val conf = new SparkConf().setMaster("local[3]").setAppName("CreateRDD")
val sc = new SparkContext(conf)
// 2. 创建RDD 从scala集合得到RDD
val arr1 = Array(30, 50, 70, 60, 10, 20)
// val rdd: RDD[Int] = sc.parallelize(arr1)
//makeRDD 和parallelize 方法是一模一样的.
val rdd: RDD[Int] = sc.makeRDD(arr1)
// 3. 转换
// 4. 行动算子 ,如果数据量太大的话,可能会给你的driver撑爆.
val arr: Array[Int] = rdd.collect()
arr.foreach(println)
// 5. 关闭SparkContext
sc.stop()
}
}
输出
30
50
70
60
10
20