1. 程式人生 > >java 版spark 中的map運算元的使用

java 版spark 中的map運算元的使用

import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.api.java.function.Function;
import org.apache.spark.api.java.function.VoidFunction;

import java.util.Arrays;
import java.util.List;

public class Test02 {
    public static void main(String[] args) {
        map();
    }
    /**
     * transformation操作實戰
     * @param args
     */

        /**
         * map運算元案例,將集合中每一個元素都乘以2
         */
        public static void map(){
            //建立SparkConf
            SparkConf conf = new SparkConf().setAppName("map").setMaster("local");
            //建立javaSparkContext
            JavaSparkContext sc = new JavaSparkContext(conf);
            //構建集合
            List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
            //並行化集合,建立初始RDD
            JavaRDD<Integer> numberRDD = sc.parallelize(numbers);

            //使用map運算元,將集合中每個元素都乘以2
            //map運算元,是對於任何型別的RDD,都可以呼叫的
            //在java中,map運算元接收的引數是Function物件
            //建立的function物件,一定會讓你設定第二個泛型,這個泛型型別,並返回一個新的元素
            //所有新的元素就會組成一個新的RDD

            JavaRDD<Integer> rdd = numberRDD.map(new Function<Integer, Integer>() {
                @Override
                public Integer call(Integer v1) throws Exception {
                    return v1 * 2;
                }
            });
            rdd.foreach(new VoidFunction<Integer>() {
                @Override
                public void call(Integer t) throws Exception {
                    System.out.println(t);
                }
            });

            //關閉資源
            sc.close();


        }

}