熊熊出没 发表于 2024-7-29 16:33:27

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
检察对应版本,出版本后及为安装乐成
https://img-blog.csdnimg.cn/direct/b519cc53dd61459ab96bc56bfed70eca.png
2、安装scala:

https://www.scala-lang.org/download/2.12.12.html
如今多数用利用spark3.0以上版本,spark3.0版本不支持scala2.12以下版本
在官网下载完成后解压tar包(配置环境变量)
在控制台输入scala 能进入scala及为安装乐成
https://img-blog.csdnimg.cn/direct/6914caf0a1404172918fb52ece067ea2.png
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堆栈按照指示举行配置
https://img-blog.csdnimg.cn/direct/096db5ec22004fb48c87bc135f4834f1.png
4、安装idea

1、点击下一步
https://img-blog.csdnimg.cn/direct/4a3b5adcd11d4691bea23f18175a010f.png
2、选择安装目次,点击下一步
https://img-blog.csdnimg.cn/direct/d22299e22833462e9331c216efccef54.png
3、可以全选
https://img-blog.csdnimg.cn/direct/40a6e0d1e5314c21971871a6952746d8.png
4、点击安装
https://img-blog.csdnimg.cn/direct/2edb1eef127d493a8650f60d43005d0c.png
https://img-blog.csdnimg.cn/direct/32558259367a45c99e7559be9ff98e44.png
安装完成打开idea
二、配置idea maven环境(MapReduce)

1、进入idea后先不要创建项目,如果创建项目后先退出项目(这样配置的就是全局设置)
https://img-blog.csdnimg.cn/direct/da826663a7ae4b1bbcf2c93e0af9020a.png
3、进入maven的配置目次
https://img-blog.csdnimg.cn/direct/e979672fc0c74c99922e0e350c2524e7.png
4、修改maven目次(设置为自己的maven解压目次)
目次不存在自行创建目次
https://img-blog.csdnimg.cn/direct/599041038be74b7199be16fca6340a4d.png
https://img-blog.csdnimg.cn/direct/2b13c80cdb964c4d88531acc3c0a3c49.png5、进入Runner举行配置
   -DarchetypeCatalog=internal    https://img-blog.csdnimg.cn/direct/b103644bf7fb4a68b4220cd4c2bdb113.png
1、创建项目

1、创建一个Java Maven项目
https://img-blog.csdnimg.cn/direct/2ae1d64a171e4c3ca6e3aef5860549e1.png
https://img-blog.csdnimg.cn/direct/ecfd301261864ede921d708190b649ee.png
2、创建完成后进入pom.xml配置文件举行maven配置
https://img-blog.csdnimg.cn/direct/d9f6a35b17ce4b98bd7d52c35aefe45e.png
3、输入mapreduce所需要的maven
    <dependencies>
      <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>RELEASE</version>
      </dependency>
      <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.8.2</version>
      </dependency>
      <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-common</artifactId>
            <version>2.10.1</version>
      </dependency>
      <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-client</artifactId>
            <version>2.10.1</version>
      </dependency>
      <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-hdfs</artifactId>
            <version>2.10.1</version>
      </dependency>
    </dependencies> https://img-blog.csdnimg.cn/direct/9687d37936214cce8747337eef14a7ce.png
4、刷新,下载程序所需要的maven jar包
https://img-blog.csdnimg.cn/direct/6b0e655f867240f6bc8372a9be5cd59e.png
5、jar包下载完成后举行程序测试(写一个简朴的wordcount程序)
测试代码放在下面了
原始数据:
https://img-blog.csdnimg.cn/direct/ebb9ed464c364eb2b33b51ef253e85df.png
https://img-blog.csdnimg.cn/direct/c975c055627a487688c1c584224fed3e.png
程序运行竣事,检察结果
https://img-blog.csdnimg.cn/direct/6092c75c7a944441b6ca03219e970674.png
2、MapReduce WordCount程序

程序代码:
package org.example;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;

import java.io.IOException;

public class WordCount {
    static public class TheMapper extends Mapper<LongWritable, Text, Text, IntWritable> {
      @Override
      protected void map(LongWritable key, Text value, Mapper<LongWritable, Text, Text, IntWritable>.Context context) throws IOException, InterruptedException {
            String a = value.toString();
            String[] words = a.split(",");
            for (String word : words) {
                context.write(new Text(word), new IntWritable(1));
            }
      }
    }

    static public class TheReducer extends Reducer<Text, IntWritable, Text, IntWritable> {
      @Override
      protected void reduce(Text key, Iterable<IntWritable> values, Reducer<Text, IntWritable, Text, IntWritable>.Context context) throws IOException, InterruptedException {

            int count = 0;
            for (IntWritable value : values) {
                count += value.get();
            }
            context.write(key, new IntWritable(count));
      }
    }

    public static void main(String[] args) throws Exception {

      //设置环境参数
      Configuration conf = new Configuration();
      Job job = Job.getInstance(conf);
      //设置主类
      job.setJarByClass(WordCount.class);
      //设置map和reducer
      job.setMapperClass(TheMapper.class);
      job.setReducerClass(TheReducer.class);
      // 设置输入和输出类型
      //输入类型
      job.setMapOutputKeyClass(Text.class);
      job.setMapOutputValueClass(IntWritable.class);
      //输出类型
      job.setOutputKeyClass(Text.class);
      job.setOutputValueClass(IntWritable.class);

      //设置输入和输出路径
      FileInputFormat.setInputPaths(job, new Path("D:\\data\\word.txt"));
      FileOutputFormat.setOutputPath(job, new Path("d:\\data\\tmp"));


      System.exit(job.waitForCompletion(true) ? 0 : 1);

    }
}
三、配置Spark环境

1、配置spark maven

正常创建一个java的maven项目
在pom.xml配置文件中添加下面配置
    <properties>
      <maven.compiler.source>8</maven.compiler.source>
      <maven.compiler.target>8</maven.compiler.target>
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

      <!-- 声明scala的版本 -->
      <scala.version>2.12.11</scala.version>
      <!-- 声明linux集群搭建的spark版本,如果没有搭建则不用写 -->
      <spark.version>3.2.1</spark.version>
      <!-- 声明linux集群搭建的Hadoop版本 ,如果没有搭建则不用写-->
      <hadoop.version>3.2.1</hadoop.version>
    </properties>

    <dependencies>
      <!--scala-->
      <dependency>
            <groupId>org.scala-lang</groupId>
            <artifactId>scala-library</artifactId>
            <version>${scala.version}</version>
      </dependency>
      <!-- https://mvnrepository.com/artifact/org.apache.spark/spark-core -->
      <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-core_2.12</artifactId>
            <version>3.2.1</version>
      </dependency>
      <!-- https://mvnrepository.com/artifact/org.apache.spark/spark-sql -->
      <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-sql_2.12</artifactId>
            <version>3.2.1</version>
      </dependency>
      <!-- https://mvnrepository.com/artifact/org.apache.spark/spark-streaming -->
      <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-streaming_2.12</artifactId>
            <version>3.2.1</version>
            <scope>provided</scope>
      </dependency>
    </dependencies> 下载后刷新页面(第一次下载大概会有点慢)https://img-blog.csdnimg.cn/direct/de0cbdcde06b453188c0909b7e0429c4.png
2、运行第一个spark程序

一、创建一个scala文件
1)、下载scala插件(进入插件市场输入scala搜索下载,等候下载完成即可)
          下载完成后重启idea
https://img-blog.csdnimg.cn/direct/c16e420ee936436d931be64bca52ce2a.png

2)、加入scala程序文件
https://img-blog.csdnimg.cn/direct/0e9ef9e9638949cb8b9fc76140cf0f98.png
https://img-blog.csdnimg.cn/direct/dc7840d0f2764affa19d6db122970ab0.png
https://img-blog.csdnimg.cn/direct/515ce0eb30fd4ec5a62e6575e60afa75.png
3)、创建第一个scala文件https://img-blog.csdnimg.cn/direct/2df9338433314b099b1fdc539912c1dd.png
4)、写一个简朴的wordcount程序
完备代码写在下方  (原始文件同上)
https://img-blog.csdnimg.cn/direct/3ec521eaca904e82880b51e4c1c1fc30.png
处理结果:
https://img-blog.csdnimg.cn/direct/edd822bc0b334d26a470aa50bb18b460.png
完备代码:
package org.example

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}


object Test {
def main(args: Array): Unit = {
    val conf = new SparkConf().setAppName("wordcount").setMaster("local")
    val sc = new SparkContext(conf)
    val rdd = sc.textFile("D:\\data\\user_info.csv") // 读取文件
      .map(x => x.split(","))
      .map(x => (x, 1))
      .reduceByKey(_ + _)
      .map(x => s"(${x._1}:${x._2})")
      .saveAsTextFile("d:\\data\\tmp")// 保存到本地文件系统
      val rdd1 = sc.textFile("d:\\data\\tmp") // 读取保存的文件
      rdd1.collect().foreach(println) // 打印结果
    sc.stop() // 停止SparkContext
}
}

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: Maven IDEA环境搭建(MapReducer、Spark)