一、开发环境:
操作系统:win8 64位
IDE:IntelliJ IDEA
JDK:1.7
scala:scala-2.11.7
spark:linux上spark集群版本:1.4.1,本地依赖spakr的jar直接拷贝linux上$SPARK_1.4.1-hadoop2.4.0.jar
maven关键依赖:
- <dependency>
- <groupId>org.apache.spark</groupId>
- <artifactId>spark-core_2.10</artifactId>
- <version>1.4.1</version>
-
二、环境配置:
1、在window下配置环境变量:SCALA_HOME,然后引入到Path中
2、确保linux上spark集群的Master的spark-env.sh中SPARK_MASTER_IP的值本机能ping通,一般有两种配置:
1)直接配置IP为10.x.x.x,确保能ping同此IP即可,Master即为:spark://10.x.x.x:7077
2)配置的为linux机器名称如Master1.Hadoop,则需要在windows的hosts文件中将其配置进来,Master为spark://Master1.Hadoop:7077
伦理片 http://www.dotdy.com/
三、提交流程
1、将spark任务类打jar包,生成d://....//spark-demo.jar,此处打的jar包放在linux使用spark-submit命令行调用也能执行
2、执行任务类或采用SparkSubmit.main(args)提交
四、代码实测:
1、spark 圆周率,此程序无须提交数据文件
新建项目,引入以上pom依赖,且将spark-assembly-1.4.1-hadoop2.4.0.jar手动加入项目中,新建类MyPi.java
- package com.alleyz.spark;
- import org.apache.spark.SparkConf;
- import org.apache.spark.api.java.JavaRDD;
- import org.apache.spark.api.java.JavaSparkContext;
- import org.apache.spark.api.java.function.Function;
- import org.apache.spark.api.java.function.Function2;
- import java.util.ArrayList;
- import java.util.List;
- /**
- * Created by Mr on 2016/1/5.
- */
- public class MyPI {
- public static void main(String[] atrs){
- SparkConf conf = new SparkConf();
- conf.setAppName("alleyz-lad").setMaster("spark://Master1.Hadoop:7077");
- JavaSparkContext jsc = new JavaSparkContext(conf);
- jsc.addJar("G:\\workspace\\idea\\spark-demo\\target\\artifacts\\spark_demo_jar\\spark-demo.jar");
- int slices = 20;
- int n = 100000 * slices;
- List<Integer> l = new ArrayList<Integer>(n);
- for (int i = 0; i < n; i++) {
- l.add(i);
- }
- JavaRDD<Integer> dataSet = jsc.parallelize(l, slices);
- int count = dataSet.map(new Function<Integer, Integer>() {
- @Override
- public Integer call(Integer integer) {
- double x = Math.random() * 2 - 1;
- double y = Math.random() * 2 - 1;
- return (x * x + y * y < 1) ? 1 : 0;
- }
- }).reduce(new Function2<Integer, Integer, Integer>() {
- @Override
- public Integer call(Integer integer, Integer integer2) {
- return integer + integer2;
- }
- });
- System.out.println("Pi is roughly " + 4.0 * count / n);
- jsc.stop();
- }
- }
先打jar包,然后点击右键运行,浏览器打开 http://Master1.Hadoop:8080 则可以看到正在执行的任务,稍后控制台会输入具体的结果,程序结束;
影音先锋电影 http://www.iskdy.com/
2、LDA
需要引入pom文件依赖,准备数据,我自己的如下(词组成的一个不规则矩阵):