1,spark项目必须添加spark-core/hadoop-common/scala-library三个包
2,spark支持lambda表达式,返回值须指明具体类型,如Tuple2<String,Integer>
3,将结果保存为一个文件而不是多个part:
rs.repartition(1).saveAsTextFile(args[1]);
4,spark中也可以实现如果输出路径存在即删除(方法与hadoop一样)
Path in = new Path(args[0]); //如果存在路径就删除之
Path out = new Path(args[1]);
FileSystem fileSystem = FileSystem.get(new URI(in.toString()), new Configuration());
if (fileSystem.exists(out))fileSystem.delete(out, true);
5,将RDD的每个元素转变为一组元素并合并为新的RDD,使用flatmaptopair方法,接收一个返回Iterator<Tuple2<String, String>>的PairFlatMapFunction,使用lambda表达式时也必须返回一个List对象的Iterator形式
//常规形式
JavaPairRDD<String,String> pairs_joined=pairs_reduce.flatMapToPair(
new PairFlatMapFunction<Tuple2<String,Iterable<Tuple2<String,String>>>,String,String>()
{
public Iterator<Tuple2<String, String>> call(Tuple2<String,Iterable<Tuple2<String,String>>> i){
List<Tuple2<String, String>> rs=new ArrayList<Tuple2<String, String>>();
return rs.iterator();
}
};
//lambda形式
JavaPairRDD<String, Integer> pairs=lines.flatMapToPair(n -> {
List<Tuple2<String, Integer>> l=new ArrayList<Tuple2<String, Integer>>();
return l.iterator();
});