实现两组数据的Join操作。
第一组:i, i*i
第二组:i, 'a'+i
join之后的结果是:i, i*i, 'a'+i
public class SparkSample {
private static final Pattern SPACE = Pattern.compile(" ");
public static void main(String args[]) {
SparkConf sparkConf = new SparkConf();
sparkConf.setAppName("SparkJavaWordCount");
sparkConf.setMaster("local");
JavaSparkContext context = new JavaSparkContext(sparkConf);
List data = Arrays.asList(1,2,3,4,5);
JavaRDD distData= context.parallelize(data);
JavaPairRDD firstRDD = distData.mapToPair(new PairFunction() {
@Override
public Tuple2 call(Integer integer) throws Exception {
return new Tuple2(integer, integer*integer);
}
});
JavaPairRDD secondRDD = distData.mapToPair(new PairFunction() {
@Override
public Tuple2 call(Integer integer) throws Exception {
return new Tuple2(integer, String.valueOf((char)('a' + integer)));
};
});
JavaPairRDD> joinRDD = firstRDD.join(secondRDD);
JavaRDD result = joinRDD.map(new Function>, String>() {
@Override
public String call(Tuple2> integerTuple2Tuple2) throws Exception {
int key = integerTuple2Tuple2._1();
int value1 = integerTuple2Tuple2._2()._1();
String value2 = integerTuple2Tuple2._2()._2();
return key + " " + value1 + " " + value2;
}
});
List reslist = result.collect();
for(String str : reslist) {
System.out.println(str);
}
context.stop();
}
}