此专题默认你有Java基础,对SparK已经有初步了解,并且准备学习开发spark应用。专题内容基于windows环境。
一.软件准备
这里选择了已经为Hadoop2.4编译好的版本,为了能和Hadoop2.4更好的结合。当然有能力你可自己编译。
2.Eclipse IDE for Java EE Developers
根据自己的系统选择合适的版本,下载安装。
二.搭建spark单机环境
1.解压缩文件
2.系统环境变量配置
1)新建SPARK_HOME。
2)修改Path
3)检测环境变量
三.基于Spark使用Java开发WordCount
1.使用Eclipse建立Java工程,新建WordCount类。
2.添加依赖jar包(位于SPARK_HOME/lib/下)
3.编写WordCount类
WordCount.java
package chaobo.spark.examples;
import java.util.Arrays;
import java.util.List;
import java.util.regex.Pattern;
import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaPairRDD;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.api.java.function.FlatMapFunction;
import org.apache.spark.api.java.function.Function2;
import org.apache.spark.api.java.function.PairFunction;
import scala.Tuple2;
public class WordCount {
public static void main(String[] args) {
final Pattern SPLIT = Pattern.compile(" ");
SparkConf conf = new SparkConf().setMaster("local[4]").setAppName("word count");
JavaSparkContext context = new JavaSparkContext(conf);
JavaRDDlines = context.textFile("C:\\Users\\chaobo\\Desktop\\spark.txt");
JavaRDDwords = lines.flatMap(new FlatMapFunction() {
@Override
public Iterablecall(String line) throws Exception {
return Arrays.asList(SPLIT.split(line));
}
});
JavaPairRDDones = words.mapToPair(new PairFunction() {
@Override
public Tuple2call(String word) throws Exception {
return new Tuple2(word, 1);
}
});
JavaPairRDDcounts = ones.reduceByKey(new Function2() {
@Override
public Integer call(Integer arg0, Integer arg1) throws Exception {
return arg0 + arg1;
}
});
List output = counts.collect();
for (Tuple2tuple : output) {
System.out.println(tuple._1() + ": " + tuple._2());
}
context.close();
}
}
4,测试结果
网友评论