天天看点

Spark 资源和数据并行度优化分析3 | 学习笔记

开发者学堂课程【大数据实时计算框架 Spark 快速入门:Spark资源和数据并行度优化分析3】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:

https://developer.aliyun.com/learning/course/100/detail/1686

Spark 资源和数据并行度优化分析3

内容简介:

一、FlatMap 算子

二、Collect 算子

public static void main(String[] args) {

SparkConfconf = new SparkConf().setAppName("FlatMapOperator").setMaster("local");

JavaSparkContext sc = new JavaSparkContext(conf);

List linelist = Arrays.aslist("hello xuruyun","hello xuruyun","hello JavaRDD lines=sc.parallelize(lineList);

// flatMap = flat+ map

JavaRDD words = lines.flatMap(new FlatMapFunction(){private static final long serialVersionUID = 1L;

@Override

public Iterable call(String line) throws Exception {

returnArrays.aslist(line.split(""));

}};

words. foreach(new VoidFunction(){private static final long serialVersionUID = 1L;

@Override

public void call(String result) throws Exception {

public class Collectoperator {

publicstatic void main(String[] args) {

SparkConfconf = new SparkConf().setAppName("ReduceOperator").setMaster("local");

JavaSparkContext sc = new JavaSparkContext(conf);

//有一个集合,里面有1到10,10个数字,现在我们通过 reduce 来进行累加

List numberList = Arrays. asList(1, 2, 3, 4, 5);

JavaRDD numbers = sc.parallelize(numberList);

JavaRDD doubleNumbers = numbers. map(new Function

@Override

public Integer call(Integer v) throws Exception {

returnv* 2;

});

// 用 foreach action 操作, collect 在远程集群上遍历 RDD 的元素// 用collect 操作,将分布式的在远程集群里面的数据拉取到本地!!!//这种方式不建议使用,如果数据量大,走大量的网络传输//甚至有可能 OOM 内存溢出,通常情况下你会看到用 foreach 操作 List doubleNumberList = doubleNumbers.

collect();for(Integer num: doubleNumberList){

System.out.println(num);

sc.close();

继续阅读