开发者学堂课程【大数据实时计算框架 Spark 快速入门:Spark资源和数据并行度优化分析3】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/100/detail/1686
Spark 资源和数据并行度优化分析3
内容简介:
一、FlatMap 算子
二、Collect 算子
一、FlatMap 算子
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 {
二、Collect 算子
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();