学习spark之后,第一次实践操作写个wordCount,在实践中遇到问题
1、开发环境和服务器运行环使用的spark类库版本不一致达,导致在本地开发环境运行正常,但提交服务器运行报错,需要开发环境和运行环境spark版本一致
2、在驱动程序中设置sparktconf 需要注意,如果环境变量设置不对,也有可能报错
具体实现如下:
-
public static void main(String []args){
-
String master=args[0];
-
String inputFile=args[1];
-
String outputFile=args[2];
-
SparkConf conf = new SparkConf().setMaster(master).setAppName("wordCount");
-
JavaSparkContext sc = new JavaSparkContext(conf);
-
JavaRDD<String> input = sc.textFile(inputFile);
-
-
JavaRDD<String> wordList = input.flatMap(new FlatMapFunction<String, String>() {
-
@Override
-
public Iterator<String> call(String s) throws Exception {
-
//读取每行数据 并按空格分隔
-
return Arrays.asList(s.split(" ")).iterator();
-
}
-
});
-
-
JavaPairRDD<String, Integer> countList = wordList.mapToPair(new PairFunction<String, String, Integer>() {
-
@Override
-
public Tuple2<String, Integer> call(String s) throws Exception {
-
//计数 生成key value
-
return new Tuple2<String, Integer>(s, 1);
-
}
-
}).reduceByKey(new Function2<Integer, Integer, Integer>() {
-
@Override
-
public Integer call(Integer v1, Integer v2) throws Exception {
-
//按key聚合
-
return v1+v2;
-
}
-
});
-
System.out.println(StringUtils.join(countList.collect(),","));
-
countList.saveAsTextFile(outputFile);
-
}
阅读(1128) | 评论(0) | 转发(0) |