当前位置: 首页 > news >正文

通过在idea上搭建虚拟hadoop环境使用MapReduce做词频去重

idea上的MapReduce

​ 一般在开发中,若是等到环境搭配好了再进行测试或者统计数据,数据处理等操作,那会很耽误时间,所以一般都是2头跑,1波人去在客户机上搭建环境,1波人通过在idea上搭建虚拟hadoop环境,然后再虚拟环境下编写测试功能代码

使用Java API实现MapReduce经典案例

【案例1:数据去重】

1)配置windows下的hadoop环境变量

步骤1:将hadoop的安装包解压到指定位置(本例指定位置是:C:\Program Files)

在这里插入图片描述

步骤2:新建系统环境变量HADOOP_HOME

在这里插入图片描述

步骤3:编辑系统环境变量path

在这里插入图片描述

步骤4:添加windows系统的依赖文件,在hadoop安装路径下添加winutils.exe,winutils.pdb和hadoop.dll共3个文件

在这里插入图片描述

注意:

1)一定要重启电脑让以上配置生效(有时候不用重启也可以)

2)在命令提示符cmd中找不到hadoop的版本不影响后续编程

在这里插入图片描述

2)配置好Maven

步骤1:将maven相关文件夹apache-maven-3.6.0放在D盘的根目录

步骤2:使用idea新建maven项目,并做如下maven设置

在这里插入图片描述

3)编辑pom.xml文件,添加Maven库依赖

在这里插入图片描述

<dependencies><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-common</artifactId><version>3.1.3</version></dependency><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-hdfs</artifactId><version>3.1.3</version></dependency><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-client</artifactId><version>3.1.3</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version></dependency>
</dependencies>

4)Map阶段的实现:编写DedupMapper.java代码 (教材P116

在这里插入图片描述

package com.xyzy;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.NullWritable;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.io.Text;
import java.io.IOException;public class DedupDriver {public static  void main (String[] args) throws IOException,ClassNotFoundException, InterruptedException {Configuration conf = new Configuration();Job job = Job.getInstance(conf);job.setJarByClass(DedupDriver.class);job.setMapperClass(DedupMapper.class);job.setReducerClass(DedupReducer.class);job.setOutputKeyClass(Text.class);job.setOutputValueClass(NullWritable.class);FileInputFormat.setInputPaths(job,new Path("D:/testdata/input"));FileOutputFormat.setOutputPath(job, new Path("D:/testdata/output2"));boolean res = job.waitForCompletion(true);System.exit(res ? 0 : 1);}
}

5)Reduce阶段的实现:编写DedupReducer.java代码(教材P117)

在这里插入图片描述

package com.xyzy;import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.NullWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;import java.io.IOException;public class DedupMapper extends Mapper<LongWritable, Text, Text,NullWritable> {private static Text field = new Text();@ Overrideprotected void map(LongWritable key, Text value , Context context)throws IOException, InterruptedException{field = value;context.write(field, NullWritable.get());}
}

6)驱动类的实现:编写DedupDriver.java代码(教材P117)

在这里插入图片描述

package com.xyzy;import org.apache.hadoop.io.NullWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;
import java.io.IOException;public class DedupReducer extends Reducer<Text,NullWritable, Text,NullWritable> {@ Overrideprotected void reduce(Text key, Iterable<NullWritable>value,Context context) throwsIOException, InterruptedException{context.write(key, NullWritable.get());}
}

7)要提前在d:/testdata/input中准备好素材(提醒一下output不是自己创建的文件夹,而是运行系统自动生成的!!!)

在这里插入图片描述

8)运行后的效果:

在这里插入图片描述

自动在d:/testdata/产生目录output,内容如下:

在这里插入图片描述

如果已经产生一次结果,若再想使用去重操作,则需要改写结果存储的文件夹名,例如将output改为output1即可

http://www.lryc.cn/news/365815.html

相关文章:

  • AI技术变革与企业服务创新
  • 探秘Facebook:社交媒体的未来之路
  • rust的类型转换和一些智能指针用法(四)
  • 探索大模型技术及其前沿应用——TextIn文档解析技术
  • Java HashMap 扩容机制深度解析
  • 一、Electron 环境初步搭建
  • ffmpeg编码器编码元数据的过程以及编码前后的差异
  • AB测试学习(附有相关代码)
  • 用idea将java文件打成jar包
  • Ansible——group模块
  • Sql注入-报错注入
  • pyqt 回车触发两次editingFinished的解决办法
  • 爬取股票数据python
  • 每日新闻掌握【2024年6月4日 星期二】
  • 智谱AI 发布最新开源模型GLM-4-9B,通用能力超Llama-3-8B,多模态版本比肩GPT-4V
  • 从写简历到谈薪资的最全教程
  • Vue3 响应式API:高级函数(二)
  • 『大模型笔记』什么是提示词注入(Prompt Injection)攻击?
  • SD-WAN与IPSec的对比
  • Ceph入门到精通-ceph经典盘符飘逸问题处理步骤
  • 【CV算法工程师必看】作为一个图像算法工程师,需要会什么,要学哪些技术栈?
  • 【造化弄人:计算机系大学生真的象当年的高速公路收费员一样吗?】
  • 民主测评要做些什么?
  • JimuReport 积木报表 v1.7.5 版本发布,免费的低代码报表
  • Ubuntu安装Protobuf
  • 揭秘Lazada API:掌握数据驱动的电商帝国,轻松实现销售飞跃
  • ThinkPHP发邮件配置教程?群发功能安全吗?
  • 编译和安装OpenMediaVault(OMV)NAS
  • Java【问题 07】SSH不同版本使用jsch问题处理(7.4升级9.7及欧拉原生8.8)
  • k8s和deepflow部署与测试