1.创建新模块并添加maven依赖
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
java版 wordcount
package com.oldboy.bigdata.spark.java;
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;
import scala.actors.threadpool.Arrays;
import java.util.Iterator;
import java.util.List;
/**
* java版单词统计
*/
public class WordcountJava {
public static void main(String[] args) {
SparkConf conf = new SparkConf();
conf.setAppName("wcJava");
conf.setMaster("local") ;
JavaSparkContext sc = new JavaSparkContext(conf) ;
//1.加载文件
JavaRDD
//2.压扁
JavaRDD
public Iterator
String[] arr = s.split(" ");
return Arrays.asList(arr).iterator() ;
}
}) ;
//3.标1成对
JavaPairRDD
public Tuple2
return new Tuple2
}
}) ;
//4.聚合
JavaPairRDD
public Integer call(Integer v1, Integer v2) throws Exception {
return v1 + v2;
}
}) ;
//5.
List
for(Tuple2
System.out.println(t._1() + " : " + t._2());
}
}
}
spark-maven的依赖
在本地仓库下寻找对应工件(artifact),没有从外网下载。
可以直接向下载好的工件放到本地仓库相应的目录下。
工件的坐标:
1.groupId
org.apache.spark
映射到目录树 org/apache/spark
2.artifactId
工件id,相当于项目
映射成一个目录
3.version
版本
映射成一个目录
4.复制对应的目录到本地仓库忙碌下
C:\Users\Administrator\.m2\repository
5.在idea中重建索引
settings->maven->repositorys->local -> update
搭建spark集群
0.说明
master //s101
worker //s102 ~ s104
1.挑选4台主机
s101 ~ s104
2.分别安装spark
3.配置spark集群
[conf/slaves]
s102
s103
s104
[conf/spark-env.sh]
...
export JAVA_HOME=/soft/jdk
...
4.启动spark集群
$>sbin/start-all.sh
5.查看webui
http://s101:8080/
6.启动spark-shell连接到spark集群
spark-shell --master spark://s101:7077
7.编写程序
val rdd1 = sc.parallelize(Array[String]("hello world1" , "hello world2" , "hello world3"))
rdd1.flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect
hadoop同spark集成
1.停掉spark集群
sbin/stop-all.sh
2.在所有的spark节点的conf/目录创建core-site.xml和hdfs-site.xml软连接文件
xcall.sh "ln -s /soft/hadoop/etc/hadoop/core-site.xml /soft/spark/conf/core-site.xml"
xcall.sh "ln -s /soft/hadoop/etc/hadoop/hdfs-site.xml /soft/spark/conf/hdfs-site.xml"
3.启动hdfs集群
xzk.sh start
start-dfs.sh
4.启动spark
sbin/start-all.sh
5.在spark-shell中访问hdfs文件
val rdd1 = sc.textFile("/user/centos/1.txt")
...
部署程序在spark集群上运行程序
1.修改代码中的Master地址和文件路径等等信息
//conf.setMaster("local")
sc.textFile(args(0))
2.导出jar
配置idea的project structure -> artifacts -> + jar -> 删除第三方类库.
3.部署jar到centos,执行如下命令
4.上传气温数据到hdfs
hdfs dfs -put temp3.dat data
5.运行程序
spark-submit --master spark://s101:7077 --class MaxtempScala myspark.jar /user/centos/data/temp3.dat
spark-submit --master spark://s101:7077 --class com.oldboy.bigdata.spark.java.MaxtempJava myspark.jar /user/centos/data/temp3.dat