博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hadoop——Java编写MapReduce代码并运行
阅读量:2292 次
发布时间:2019-05-09

本文共 2725 字,大约阅读时间需要 9 分钟。

1、导入Hadoop的核心依赖包

  1. \share\hadoop\common
  2. \share\hadoop\common\lib
  3. \share\hadoop\hdfs
  4. \share\hadoop\hdfs\lib
  5. \share\hadoop\mapreduce
  6. \share\hadoop\mapreduce\lib

2、Map类

package MapReduce;import org.apache.hadoop.io.LongWritable;import org.apache.hadoop.io.Text;import org.apache.hadoop.mapreduce.Mapper;import org.apache.hadoop.util.StringUtils;import java.io.IOException;// 四个泛型,前两个是输入数据的类型,后两个是输出数据的类型public class Map extends Mapper
{
@Override protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
// 将数据转换为String类型 String line = value.toString(); // 分割字符串 String[] words = StringUtils.split(line,' '); // 遍历这个数组 for (String word:words){
context.write(new Text(word),new LongWritable(1)); } }}

3、Red类

package MapReduce;import org.apache.hadoop.io.LongWritable;import org.apache.hadoop.io.Text;import org.apache.hadoop.mapreduce.Reducer;import java.io.IOException;public class Red extends Reducer
{
@Override protected void reduce(Text key, Iterable
values, Context context) throws IOException, InterruptedException {
long count = 0; for (LongWritable value:values){
count+=value.get(); } context.write(key,new LongWritable(count)); }}

4、Run类

package MapReduce;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.Path;import org.apache.hadoop.io.LongWritable;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 Run {
public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {
Configuration conf =new Configuration(); Job job = Job.getInstance(conf); // 设置job所用的那些类在那个jar包 job.setJarByClass(Run.class); //设置使用的Map和Reduced的类 job.setMapperClass(Map.class); job.setReducerClass(Red.class); // 设置Reduce输出的数据类型 job.setOutputKeyClass(Text.class); job.setOutputValueClass(LongWritable.class); //设置map输出数据的类型 job.setMapOutputKeyClass(Text.class); job.setMapOutputValueClass(LongWritable.class); // 设置原始数据存放路径 FileInputFormat.setInputPaths(job,new Path("/input/")); //设置处理结果输出路径 FileOutputFormat.setOutputPath(job,new Path("/output/")); // 将job提交给集群运行 job.waitForCompletion(true); }}

5、打包为Jar包

6、运行命令

创建input目录

hadoop fs -mkdir /input

提交文件

hadoop fs -put 文件路径 /input

运行

hadoop jar MapReduce.jar MapReduce.Run

转载地址:http://cisnb.baihongyu.com/

你可能感兴趣的文章
Maven构建环境安装
查看>>
SVN检出报错
查看>>
SVN同步版本库
查看>>
网络流量分析工具TCPDUMP
查看>>
系统弱密码检查John
查看>>
恢复已删除文件
查看>>
对敏感备份数据加密
查看>>
Docker单机编排docker-compose
查看>>
Docker数据管理
查看>>
Dockerfile创建镜像
查看>>
Docker镜像仓库搭建 图形化Harbor
查看>>
Kubernetes集群组件安装(二进制安装)
查看>>
K8S控制器Deployment
查看>>
MongoDB基础操作
查看>>
Nginx地址重定向 return rewrite if
查看>>
PHP安装Redis模块
查看>>
PHP追加安装时候忘装的模块
查看>>
PHP平滑升级
查看>>
MySQL用户权限
查看>>
MySQL数据备份
查看>>