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
里面的函数是怎么实现的
本文介绍了如何使用Spark创建和操作RDD,包括从文件夹和列表生成RDD的方法,以及使用map和flatMap进行转换的区别。同时,还讲解了如何将单一类型转换为配对类型,并对比了reduceByKey和groupByKey的功能。

388

被折叠的 条评论
为什么被折叠?



