基于spark用java写一个word count的程序,打成jar包,使用spark-submit命令以提交到yarn程序运行
时间: 2024-02-21 08:59:24 浏览: 88
java实现的spark的wordcount单词技术程序
好的,以下是基于Spark用Java写一个Word Count的程序,并打成Jar包的步骤:
1. 确保已经安装好了Java和Spark,并且环境变量已经配置好了。
2. 创建一个Java Maven项目,添加以下依赖到pom.xml文件中:
```xml
<dependencies>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.11</artifactId>
<version>2.2.0</version>
</dependency>
</dependencies>
```
3. 创建一个WordCount类,实现Spark的Word Count算法:
```java
import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import scala.Tuple2;
import java.util.Arrays;
import java.util.List;
public class WordCount {
public static void main(String[] args) {
// 创建SparkConf对象
SparkConf conf = new SparkConf().setAppName("WordCount");
// 创建JavaSparkContext对象
JavaSparkContext sc = new JavaSparkContext(conf);
// 读取文件
JavaRDD<String> lines = sc.textFile(args[0]);
// 将每行数据切分成单词
JavaRDD<String> words = lines.flatMap(line -> Arrays.asList(line.split(" ")).iterator());
// 将单词转换为键值对
JavaRDD<Tuple2<String, Integer>> pairs = words.map(word -> new Tuple2<>(word, 1));
// 按键进行分组并统计数量
JavaRDD<Tuple2<String, Integer>> counts = pairs.reduceByKey((a, b) -> a + b);
// 输出结果
List<Tuple2<String, Integer>> output = counts.collect();
for (Tuple2<String, Integer> tuple : output) {
System.out.println(tuple._1() + ": " + tuple._2());
}
// 关闭JavaSparkContext对象
sc.stop();
}
}
```
4. 在命令行中进入项目目录,执行以下命令打成Jar包:
```shell
mvn clean package
```
5. 将打包好的Jar包上传到HDFS上,例如:
```shell
hadoop fs -mkdir /wordcount
hadoop fs -put target/wordcount-1.0-SNAPSHOT.jar /wordcount/wordcount.jar
```
6. 使用spark-submit命令以提交到yarn程序运行:
```shell
spark-submit --class WordCount --master yarn --deploy-mode cluster /wordcount/wordcount.jar /input.txt
```
其中,/input.txt为需要统计的文件路径。
注意:在执行以上步骤前,请确保已经正确配置好了Hadoop和Yarn的环境。
阅读全文