ToB企服应用市场:ToB评测及商务社交产业平台

标题: Maven IDEA环境搭建(MapReducer、Spark) [打印本页]

作者: 熊熊出没    时间: 2024-7-29 16:33
标题: Maven IDEA环境搭建(MapReducer、Spark)
目次

一、预备需要的安装包
1、安装jdk1.8
2、安装scala:
3、安装maven
4、安装idea
二、配置idea maven环境(MapReduce)
1、创建项目
2、MapReduce WordCount程序
三、配置Spark环境
1、下载scala
2、配置spark maven
3、运行第一个spark程序


一、预备需要的安装包

1、安装jdk1.8

https://www.oracle.com/java/technologies/downloads/
找到对应的版本下载安装后配置环境变量
在控制台输入 java -version
检察对应版本,出版本后及为安装乐成

2、安装scala:

https://www.scala-lang.org/download/2.12.12.html
如今多数用利用spark3.0以上版本,spark3.0版本不支持scala2.12以下版本
在官网下载完成后解压tar包(配置环境变量)
在控制台输入scala 能进入scala及为安装乐成

3、安装maven

https://maven.apache.org/download.cgi
进入maven官网后下载对应的.tar.gz包即可
下载完成后对maven举行解压(idea不需要配置maven环境变量)
但需要对maven举行须要的配置修改!!(maven默认的服务器在在国外,后续idea配置maven时,下载会非常慢,需要把服务改到国内的阿里云maven堆栈)
https://developer.aliyun.com/mvn/guide
进入阿里云的maven堆栈按照指示举行配置

4、安装idea

1、点击下一步

2、选择安装目次,点击下一步

3、可以全选

4、点击安装


安装完成打开idea
二、配置idea maven环境(MapReduce)

1、进入idea后先不要创建项目,如果创建项目后先退出项目(这样配置的就是全局设置)

3、进入maven的配置目次

4、修改maven目次(设置为自己的maven解压目次)
目次不存在自行创建目次

5、进入Runner举行配置
   -DarchetypeCatalog=internal   

1、创建项目

1、创建一个Java Maven项目


2、创建完成后进入pom.xml配置文件举行maven配置

3、输入mapreduce所需要的maven
  1.     <dependencies>
  2.         <dependency>
  3.             <groupId>junit</groupId>
  4.             <artifactId>junit</artifactId>
  5.             <version>RELEASE</version>
  6.         </dependency>
  7.         <dependency>
  8.             <groupId>org.apache.logging.log4j</groupId>
  9.             <artifactId>log4j-core</artifactId>
  10.             <version>2.8.2</version>
  11.         </dependency>
  12.         <dependency>
  13.             <groupId>org.apache.hadoop</groupId>
  14.             <artifactId>hadoop-common</artifactId>
  15.             <version>2.10.1</version>
  16.         </dependency>
  17.         <dependency>
  18.             <groupId>org.apache.hadoop</groupId>
  19.             <artifactId>hadoop-client</artifactId>
  20.             <version>2.10.1</version>
  21.         </dependency>
  22.         <dependency>
  23.             <groupId>org.apache.hadoop</groupId>
  24.             <artifactId>hadoop-hdfs</artifactId>
  25.             <version>2.10.1</version>
  26.         </dependency>
  27.     </dependencies>
复制代码

4、刷新,下载程序所需要的maven jar包

5、jar包下载完成后举行程序测试(写一个简朴的wordcount程序)
测试代码放在下面了
原始数据:


程序运行竣事,检察结果

2、MapReduce WordCount程序

程序代码:
  1. package org.example;
  2. import org.apache.hadoop.conf.Configuration;
  3. import org.apache.hadoop.fs.Path;
  4. import org.apache.hadoop.io.IntWritable;
  5. import org.apache.hadoop.io.LongWritable;
  6. import org.apache.hadoop.io.Text;
  7. import org.apache.hadoop.mapreduce.Job;
  8. import org.apache.hadoop.mapreduce.Mapper;
  9. import org.apache.hadoop.mapreduce.Reducer;
  10. import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
  11. import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
  12. import java.io.IOException;
  13. public class WordCount {
  14.     static public class TheMapper extends Mapper<LongWritable, Text, Text, IntWritable> {
  15.         @Override
  16.         protected void map(LongWritable key, Text value, Mapper<LongWritable, Text, Text, IntWritable>.Context context) throws IOException, InterruptedException {
  17.             String a = value.toString();
  18.             String[] words = a.split(",");
  19.             for (String word : words) {
  20.                 context.write(new Text(word), new IntWritable(1));
  21.             }
  22.         }
  23.     }
  24.     static public class TheReducer extends Reducer<Text, IntWritable, Text, IntWritable> {
  25.         @Override
  26.         protected void reduce(Text key, Iterable<IntWritable> values, Reducer<Text, IntWritable, Text, IntWritable>.Context context) throws IOException, InterruptedException {
  27.             int count = 0;
  28.             for (IntWritable value : values) {
  29.                 count += value.get();
  30.             }
  31.             context.write(key, new IntWritable(count));
  32.         }
  33.     }
  34.     public static void main(String[] args) throws Exception {
  35.         //设置环境参数
  36.         Configuration conf = new Configuration();
  37.         Job job = Job.getInstance(conf);
  38.         //设置主类
  39.         job.setJarByClass(WordCount.class);
  40.         //设置map和reducer
  41.         job.setMapperClass(TheMapper.class);
  42.         job.setReducerClass(TheReducer.class);
  43.         // 设置输入和输出类型
  44.         //输入类型
  45.         job.setMapOutputKeyClass(Text.class);
  46.         job.setMapOutputValueClass(IntWritable.class);
  47.         //输出类型
  48.         job.setOutputKeyClass(Text.class);
  49.         job.setOutputValueClass(IntWritable.class);
  50.         //设置输入和输出路径
  51.         FileInputFormat.setInputPaths(job, new Path("D:\\data\\word.txt"));
  52.         FileOutputFormat.setOutputPath(job, new Path("d:\\data\\tmp"));
  53.         System.exit(job.waitForCompletion(true) ? 0 : 1);
  54.     }
  55. }
复制代码
三、配置Spark环境

1、配置spark maven

正常创建一个java的maven项目
在pom.xml配置文件中添加下面配置
  1.     <properties>
  2.         <maven.compiler.source>8</maven.compiler.source>
  3.         <maven.compiler.target>8</maven.compiler.target>
  4.         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  5.         <!-- 声明scala的版本 -->
  6.         <scala.version>2.12.11</scala.version>
  7.         <!-- 声明linux集群搭建的spark版本,如果没有搭建则不用写 -->
  8.         <spark.version>3.2.1</spark.version>
  9.         <!-- 声明linux集群搭建的Hadoop版本 ,如果没有搭建则不用写-->
  10.         <hadoop.version>3.2.1</hadoop.version>
  11.     </properties>
  12.     <dependencies>
  13.         <!--scala-->
  14.         <dependency>
  15.             <groupId>org.scala-lang</groupId>
  16.             <artifactId>scala-library</artifactId>
  17.             <version>${scala.version}</version>
  18.         </dependency>
  19.         <!-- https://mvnrepository.com/artifact/org.apache.spark/spark-core -->
  20.         <dependency>
  21.             <groupId>org.apache.spark</groupId>
  22.             <artifactId>spark-core_2.12</artifactId>
  23.             <version>3.2.1</version>
  24.         </dependency>
  25.         <!-- https://mvnrepository.com/artifact/org.apache.spark/spark-sql -->
  26.         <dependency>
  27.             <groupId>org.apache.spark</groupId>
  28.             <artifactId>spark-sql_2.12</artifactId>
  29.             <version>3.2.1</version>
  30.         </dependency>
  31.         <!-- https://mvnrepository.com/artifact/org.apache.spark/spark-streaming -->
  32.         <dependency>
  33.             <groupId>org.apache.spark</groupId>
  34.             <artifactId>spark-streaming_2.12</artifactId>
  35.             <version>3.2.1</version>
  36.             <scope>provided</scope>
  37.         </dependency>
  38.     </dependencies>
复制代码
下载后刷新页面(第一次下载大概会有点慢)

2、运行第一个spark程序

一、创建一个scala文件
1)、下载scala插件(进入插件市场输入scala搜索下载,等候下载完成即可)
          下载完成后重启idea


2)、加入scala程序文件



3)、创建第一个scala文件

4)、写一个简朴的wordcount程序
完备代码写在下方  (原始文件同上)

处理结果:

完备代码:
  1. package org.example
  2. import org.apache.spark.rdd.RDD
  3. import org.apache.spark.{SparkConf, SparkContext}
  4. object Test {
  5.   def main(args: Array[String]): Unit = {
  6.     val conf = new SparkConf().setAppName("wordcount").setMaster("local[1]")
  7.     val sc = new SparkContext(conf)
  8.     val rdd = sc.textFile("D:\\data\\user_info.csv") // 读取文件
  9.       .map(x => x.split(","))
  10.       .map(x => (x, 1))
  11.       .reduceByKey(_ + _)
  12.       .map(x => s"(${x._1}:${x._2})")
  13.       .saveAsTextFile("d:\\data\\tmp")  // 保存到本地文件系统
  14.         val rdd1 = sc.textFile("d:\\data\\tmp") // 读取保存的文件
  15.         rdd1.collect().foreach(println) // 打印结果
  16.     sc.stop() // 停止SparkContext
  17.   }
  18. }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4