本文参照网上众多资料,搭建了Spark1.6.3并实现单机运行
主要介绍了如何搭建Spark平台并在Eclipse平台上运行简单的SVD实例
Ubuntu 14.04
OpenJDK 7
Scala 2.10.6
Spark 1.6.3
Eclipse 3.8.1
MovieLens 10M(测试用)
参照:http://www.powerxing.com/install-hadoop/ 内含图片详情
更新apt
sudo apt-get update
安装Java环境
sudo apt-get install openjdk-7-jre openjdk-7-jdk
安装好 OpenJDK 后,需要找到相应的安装路径,这个路径是用于配置 JAVA_HOME 环境变量的。执行如下命令:
dpkg -L openjdk-7-jdk | grep '/bin/javac'
该命令会输出一个路径,除去路径末尾的 “/bin/javac”,剩下的就是正确的路径了。如输出路径为 /usr/lib/jvm/java-7-openjdk-amd64/bin/javac,则我们需要的路径为 /usr/lib/jvm/java-7-openjdk-amd64
接着配置 JAVA_HOME 环境变量,为方便,我们在 ~/.bashrc 中进行设置
gedit ~/.bashrc
在文件最前面添加如下单独一行(注意 = 号前后不能有空格),将“JDK安装路径”改为上述命令得到的路径,并保存:
export JAVA_HOME=JDK安装路径
最后使配置生效
source ~/.bashrc # 使变量设置生效
设置好后我们来检验一下是否设置正确:
java -version
参照:http://blog.csdn.net/lin360580306/article/details/51233397
下载:http://www.scala-lang.org/download/2.10.6.html
解压缩:
tar –zxvf scala-2.10.6.tgz
进入sudo gedit /etc/profile在下面添加路径:
SCALA_HOME=/home/hadoop/scala-2.10.6 #注意替换成解压后的路径
PATH=$PATH:${SCALA_HOME}/bin
使配置生效
source /etc/profile
参照:http://blog.csdn.net/lin360580306/article/details/51233397
下载:http://spark.apache.org/downloads.html
解压缩:
tar –zxvf spark-1.6.3-bin-hadoop2.6.tgz
进入sudo gedit /etc/profile在下面添加路径:
SPARK_HOME=/home/hadoop/spark-1.6.3-bin-hadoop2.6#注意替换成解压后的路径
PATH=$PATH:${SPARK_HOME}/bin
使配置生效
source /etc/profile
可以在命令行中输入 spark-shell(可在安装目录中bin里面找到) 检测是否安装成功
参照:http://www.powerxing.com/hadoop-build-project-using-eclipse/ 中的 “安装Eclipse”即可
找到Ubuntu软件中心->搜索eclipse->点击安装
参照:http://www.jianshu.com/p/a617005df355
新建Java工程->导入Spark包
代码:
public class MovieLens {
public static void main(String[] args) {
//删除一些无关的log信息
Logger.getLogger("org.apache.spark").setLevel(Level.WARN);
Logger.getLogger("org.apache.eclipse.jetty.server").setLevel(Level.OFF);
//Spark信息配置
SparkConf conf = new SparkConf().setMaster("local[4]").setAppName("movielens");
JavaSparkContext sc = new JavaSparkContext(conf);
//读入文件
JavaRDD data = sc.textFile("ratings.dat");
JavaRDD rows = data.map(new Function() {
private static final long serialVersionUID = 1L;
//处理文件信息
@Override
public Rating call(String arg0) throws Exception {
String[] strArr = arg0.split("::");
Rating r = new Rating(Integer.parseInt(strArr[0]), Integer.parseInt(strArr[1]), Double.parseDouble(strArr[2]));
return r;
}
});
//设置检查点
sc.setCheckpointDir("checkpoint/");
ALS als = new ALS();
als.setCheckpointInterval(2);
//分解的维度设置为20,最大迭代次数设置为5,而正则化系数设置为0.02
MatrixFactorizationModel a = als.train(rows.rdd(), 20, 5,0.02);
sc.close();
}
}
主要参照:http://www.cnblogs.com/pinard/p/6364932.html 里面的代码,用Java写一遍
代码中使用的MovieLens数据集可以在网上下载 http://files.grouplens.org/datasets/movielens/ml-10m.zip