spark程序可以概括为一句话,所有的spark程序以读取数据开始,以处理数据为中心,以保存数据为结束。
读取数据可以从HDFS、本地文件或者并行化程序集合来创建,本案例是通过并行化集合来创建初始RDD。
java版本
package com.spark.core;
import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import java.util.Arrays;
import java.util.List;
public class ParallelizeCollection {
public static void main(String[] args) {
// 创建SparkConf SparkConf conf = new SparkConf()
.setAppName("ParallelizeCollection")
.setMaster("local[2]");
// 创建JavaSparkContext JavaSparkContext sc = new JavaSparkContext(conf);
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
// 要通过并行化集合的方式创建RDD,那么就调用SparkContext以及其子类的parallelize()方法 JavaRDD<Integer> nums = sc.parallelize(numbers,5);
// 执行reduce算子操作 // 相当于,先进行1 + 2 = 3;然后再用3 + 3 = 6;然后再用6 + 4 = 10。。。以此类推 int sum = nums.reduce((x,y) -> x+y);
System.out.println(sum);
// 关闭JavaSparkContext sc.close();
}
}
scala版本
package com.spark.core
import org.apache.spark.{SparkConf, SparkContext}
object ParallelizeCollectionScala {
def main(args: Array[String]): Unit = {
val conf = new SparkConf()
.setAppName(getClass.getSimpleName)
.setMaster("local[2]")
val sc = new SparkContext(conf)
val a = Array(1,2,3,4,5,6,7,8,9,10)
val rdd1 = sc.parallelize(a)
val sum = rdd1.reduce((x,y) => x+y)
println(sum)
}
}