Spark 自带 demo 的学习总结

来源:互联网 发布:内网穿透软件 linux 编辑:程序博客网 时间:2024/05/16 03:35

1.the way that to build the RDD

(1) generate from the folder : offer the folder path which has been upload the hdfs

SparkSession spark = SparkSession      .builder()      .appName("JavaHdfsLR").master("local")//note:master better no set in here ,this field show                                                    //which model you will start the spark cluster       .getOrCreate();
JavaRDD<Sting> rdd=spark.read().textFile("filePath").javaRDD();


(2)generate from the List

JavaSparkContext jsc=new JavaSparkContext(spark.sparkContext());JavaRDD<String> lines = jsc.parallelize(new ArrayList());

2.JavaRDD<T>->JavaRDD<R>

一对一类型的转变可以用到这个函数:map(new Function(T,R))

JavaRDD.map(new Function(T,R)),输入T,输出R,在函数里面完成了转化.

另外还有一个函数: flatMap(FlatMapFunction<T,U> f):

两个函数的区别主要是:map(new Function(T,R)) ,进来一个T转化成一个R出去,RDD的size是不变的flatMap(FlatMapFunction<T,U> f),进来一个T转化成 Iterable<R>增加在RDD屁股后,所以RDDsize是增加的


3.JavaRDD<T>->JavaRDD<K,V>

一变多类型的转变可以用到这个函数:

public static <K2,V2> JavaPairRDD<K2,V2> mapToPair(PairFunction<T,K2,V2> f)

其中PairFuntion---->其实是个接口,只有一个call方法,所有的Function接口形式都是类似的scala.**Tuple2<K,V>** call(T t) 

throws Exception

意思就是 输入T输出Tuple2<K,V>,其中K,V便是你要得到的新的RDD<K,V>

其中,对比两个函数 mapToPair(PairFunction<T,K2,V2> f) 

与flatMapToPair(PairFlatMapFunction<T,K2,V2> f)

PairFuntion,在call函数中,每次输入一个T,就返回一个Tuple2<K,V>对象

PairFlatMapFunction在call函数中 ,每次 输入一个 T,就 返回一个Iterable<Tuple2<K,V>>集合对象,

其实就是 List<Tuple2<K,V>>().Iterable()


4.reduceBykey 和 groupbykey 的比较,

参考:http://blog.csdn.net/zongzhiyuan/article/details/49965021

但是疑惑的是,reducebykey 里面的函数是怎么实现的


原创粉丝点击