首页 > 编程语言 >java操作hadoop之MapReduce

java操作hadoop之MapReduce

时间:2022-12-17 18:40:01浏览次数:36  
标签:java hadoop MapReduce job io import apache org

1.Mapper文件WordCountMapper.java

package com.hdfs;

import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;

import java.io.IOException;

public class WordCountMapper extends Mapper<LongWritable, Text, Text, IntWritable> {
private final Text outK = new Text();
private final IntWritable outV = new IntWritable(1);

@Override
protected void map(LongWritable key, Text value, Mapper<LongWritable, Text, Text, IntWritable>.Context context) throws IOException, InterruptedException {
String line = value.toString();
String[] words = line.split(" ");
for (String word : words) {
outK.set(word);
context.write(outK, outV);
}


}
}

2.Reducer文件WordCountReducer.java

package com.hdfs;

import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;

import java.io.IOException;

public class WordCountReducer extends Reducer<Text, IntWritable, Text, IntWritable> {
private final IntWritable outV = new IntWritable();

@Override
protected void reduce(Text key, Iterable<IntWritable> values, Reducer<Text, IntWritable, Text, IntWritable>.Context context) throws IOException, InterruptedException {
int sum = 0;
for (IntWritable value : values) {
sum += value.get();
}
outV.set(sum);
context.write(key, outV);
}
}

3.Driver文件WordCountDriver.java

package com.hdfs;

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

import java.io.IOException;

public class WordCountDriver {
public static void main(String[] args) throws IOException, InterruptedException, ClassNotFoundException {
// 1.创建job实例
Configuration config = new Configuration();
Job job = Job.getInstance(config);
// 2.设置jar
job.setJarByClass(WordCountDriver.class);
// 3.设置Mapper和Reducer
job.setMapperClass(WordCountMapper.class);
job.setReducerClass(WordCountReducer.class);
// 4.设置map输出的kv类型
job.setMapOutputKeyClass(Text.class);
job.setMapOutputValueClass(IntWritable.class);
// 5.设置最终输出的kv类型
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
// 6.设置输入路径和输出路径
FileInputFormat.setInputPaths(job, new Path("/home/navy/Desktop/work/hadoop/HadoopOperate/input"));
FileOutputFormat.setOutputPath(job, new Path("/home/navy/Desktop/work/hadoop/HadoopOperate/output"));
// 7.提交job
boolean result = job.waitForCompletion(true);
System.exit(result ? 0 : 1);
}
}

4.pom.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>org.example</groupId>
<artifactId>HdfsOperate</artifactId>
<version>1.0-SNAPSHOT</version>

<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>3.2.4</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>2.0.5</version>
</dependency>
</dependencies>

</project>

5.项目结构

java操作hadoop之MapReduce_Text

 

 6.运行WordCountDriver.java里的main方法

 



标签:java,hadoop,MapReduce,job,io,import,apache,org
From: https://blog.51cto.com/navysummer/5949947

相关文章

  • javaclient操作kafka&springboot整合kafka&kafka分区
    1.javaclient测试kafka1.配置kafka允许远程推送修改config/Kraft/server.properties文件,,将地址变为服务器公网IP地址。advertised.listeners=PLAINTEXT://localhost:90......
  • maven fmpp+javacc 集成使用简单说明
    dremio以及apachecalcite使用到fmpp+javacc进行代码生成处理,以下是一个简单的集成测试fmpp的作用fmpp实际上是包装了freemarker,提供了cli以及javaapi可以方便的......
  • java 执行命令
    javaProcessBuilder执行命令,读取错误流和标准流消息publicclassExecCommand{publicstaticvoidmain(String[]agrs)throwsIOException,InterruptedExc......
  • 微软出品自动化神器【Playwright+Java】系列(六) 之 字符输入、单元素键盘事件操作、上
    前言:今天一早起床,就一直太阳穴疼,吃了四片去痛片已经无效,真的是疼的直恶心。如果说学习或者写文章,能够或者头疼的话,那我想说,我还能坚持一会.....很久没更新这系列的文章......
  • 基于JAVA的私人牙科诊所管理系统
    分类号_______________密级________________UDC_______________学号____毕业设计(论文)学生姓名学号所在院系专业班级导师姓名职称完成日期论文题目基于JAVA的私人......
  • Java 中匿名内部类的构造方法
    因为匿名内部类没有名字这个特殊性质,所以我们无从给它指定构造方法,构造方法必须和类名同名,类名都没有,构造方法就无从谈起了。但是匿名内部类可以通过直接调用父类的构造方......
  • 26_Java的接口组成更新
    Java的接口组成更新一、接口组成更新概述回忆接口组成:​ 常量:publicstaticfinal 默认写好​ 抽象方法:publicabstract 默认写好在Java8之后加入了......
  • BUUCTF Java逆向解密
    BUUCTFJava逆向解密需要用专门的Java反编译软件:jd-gui    点开应用程序打开class文件       发现加密方式与KEY.接下来写出解密脚本就可以了.......
  • Java_JSP电子政务网(论文+源码)
    摘要当前阶段,伴随着社会信息技术的快速发展,使得电子政务能够成为我国政府职能部门进行办公管理的一个重要内容,其中就包括了提升办公效率完善服务质量以及实现信息共享等。......
  • 数据结构和算法day1(Java)
    1.什么是数据结构?数据结构就是把数据元素按照一定的关系组织起来的集合,用来组织和存储数据。1.2.数据结构的分类:逻辑结构和物理结构逻辑结构:集合结构(无关系)、线性结......