刚开始接触JavaRDD有点迷糊 各种数据类型约束也转得比较头疼 Spring后台返回的Json貌似不能直接用RDD 得用java集合 弄了一天终于有点懂了 写个总结
首先导一个数据集作为RDD
SparkConf sparkConf = new SparkConf().setAppName("MapPartitionsRdd").setMaster("local");
JavaSparkContext sc = new JavaSparkContext(sparkConf);
JavaRDD rdd = sc.textFile("file:///C:/Users/xxx/Desktop/xx.csv");//文件地址
1.JavaRDD转JavaDoubleRDD(首先数据能转为double 不能有字母 空字符不然会格式错误)
JavaDoubleRDD doubleRdd = new JavaDoubleRDD(rdd.rdd());
2.JavaRDD转JavaPairRDD(也就是(K,V)形式)
//lamda表达式
JavaPairRDD pairRdd = doubleRdd.mapToPair(x->{return new Tuple2((x/2),x); });
//内部类
//根据自己需要,在<>里改变数据类型
public JavaRDD sort(int col, JavaRDD rdd) {
JavaPairRDDrdd1 = (JavaPairRDD) rdd.mapToPair(
new PairFunction() {
public Tuple2call(String s) throws Exception {
return new Tuple2(Double.valueOf(s.split(",")[col]), s);
}
}
);
返回的就是元素(x/2,x)的元素 x是RDD里面的元素
3.JavaPairRDD转JavaRDD
JavaRDD list1 = rul.values();//获取pair里面的values集合
JavaRDD list2 = rul.keys();//获取pair里面的Key集合
4.JavaRDD转List
List list1 = rdd.collect();//数据类型要控制好,不然使用的时候会报错