基于Spark实现的Python, Scala, Java三个版本的、经典的分布式单词计数代码。
1. Scala
val input = sc.textFile("hdfs://...")
val words = input.flatMap(x => x.split(" "))
val result = words.map(x => (x, 1)).reduceByKey((x, y) => x + y).persist()
println(result.collect().mkString("\n")) //collect()在数据量比较小、单机内存能装载下时可以使用
2.Python
rdd = sc.textFile("s3://...")
words = rdd.flatMap(lambda x: x.split(" "))
result = words.map(lambda x: (x, 1)).reduceByKey(lambda x, y: x + y)
3.Java
JavaRDD<String> input = sc.textFile("s3://...")
JavaRDD<String> words = rdd.flatMap(new FlatMapFunction<String, String>() {
public Iterable<String> call(String x) { return Arrays.asList(x.split(" ")); }
});
JavaPairRDD<String, Integer> result = words.mapToPair(
new PairFunction<String, String, Integer>() {
public Tuple2<String, Integer> call(String x) { return new Tuple2(x, 1); }
}).reduceByKey(
new Function2<Integer, Integer, Integer>() {
public Integer call(Integer a, Integer b) { return a + b; }
});
本文介绍了如何使用Spark在Python、Scala和Java三种语言中实现经典的分布式单词计数任务。通过对文本文件进行处理,将其拆分为单词并进行计数,最终得到每个单词出现的频率。
6714

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



