首页 / HADOOP / hadoop入门程序
hadoop入门程序
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了hadoop入门程序,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4754字,纯文字阅读大概需要7分钟。
内容图文
一、maven配置
<?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>com.wu</groupId> <artifactId>HighTem</artifactId> <version>1.0-SNAPSHOT</version> <!--此程序需要以Hadoop文件作为输入文件,以Hadoop文件作为输出文件,因此需要用到文件系统,于是需要引入hadoop-hdfs包;--> <!--我们需要向Map-Reduce集群提交任务,需要用到Map-Reduce的客户端,于是需要导入hadoop-mapreduce-client-jobclient包;--> <!--另外,在处理数据的时候会用到一些hadoop的数据类型例如IntWritable和Text等,--> <!--因此需要导入hadoop-common包。于是运行此程序所需要的相关依赖有以下几个:--> <dependencies> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-hdfs</artifactId> <version>2.4.0</version> </dependency> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-mapreduce-client-jobclient</artifactId> <version>2.4.0</version> </dependency> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-common</artifactId> <version>2.4.0</version> </dependency> </dependencies> </project>
二、程序
package com.wu; /** * 数据格式 年份日期+温度 * 2014010114 * 2014010216 * 2014010317 * 2014010410 * 2014010506 * 2012010609 * 2012010732 * 2012010812 * 2012010919 * 2012011023 * 2001010116 * 2001010212 * 2001010310 * 2001010411 * 2001010529 * 2013010619 * 2013010722 * 2013010812 * 2013010929 * 2013011023 */ /** * 1、首先创建input.txt文件,将上面的数据复制进去 * 2、将input.txt文件上传到hdfs文件系统中 * hadoop fs -mkdir /test #新建一个test的目录 * hadoop fs -put /home/hadoop/runfile/input.txt /test/ #把对应的文件传入到hdfs里面的test目录下 * hadoop fs -ls /test #查询对应目录的信息 * * 3、将下面的代码进行打包,并在hadoop环境下运行 */ 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.conf.Configuration; import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; import java.io.IOException; /** * @Auther: wuyilong * @Date: 2019/5/24 15:55 * @Description: 一个简单的hadoop例子 */ public class Temperature { /** * 四个泛型类型分别代表: * KeyIn Mapper的输入数据的Key,这里是每行文字的起始位置(0,11,...) * ValueIn Mapper的输入数据的Value,这里是每行文字 * KeyOut Mapper的输出数据的Key,这里是每行文字中的“年份” * ValueOut Mapper的输出数据的Value,这里是每行文字中的“气温” */ static class TempMapper extends Mapper<LongWritable, Text, Text, IntWritable> { @Override protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException { String line = value.toString(); String year = line.substring(0, 4); int temperature = Integer.parseInt(line.substring(8)); context.write(new Text(year), new IntWritable(temperature)); } } /** * 四个泛型类型分别代表: * KeyIn Reducer的输入数据的Key,这里是每行文字中的“年份” * ValueIn Reducer的输入数据的Value,这里是每行文字中的“气温” * KeyOut Reducer的输出数据的Key,这里是不重复的“年份” * ValueOut Reducer的输出数据的Value,这里是这一年中的“最高气温” */ static class TempReducer extends Reducer<Text, IntWritable, Text, IntWritable> { @Override protected void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException { int maxValue = Integer.MIN_VALUE; StringBuilder sb = new StringBuilder(); for(IntWritable value : values) { maxValue = Math.max(maxValue, value.get()); sb.append(value).append(", "); } context.write(key, new IntWritable(maxValue)); } } /** * * @param args * @throws Exception */ public static void main(String[] args) throws Exception { String dst = "hdfs://localhost:9000/intput.txt";// 1输入路径 String dstOut = "hdfs://localhost:9000/output";// 2输出路径,必须是不存在的,空文件加也不行 Configuration hadoopConfig = new Configuration(); hadoopConfig.set("fs.hdfs.impl", org.apache.hadoop.hdfs.DistributedFileSystem.class.getName()); hadoopConfig.set("fs.file.impl", org.apache.hadoop.fs.LocalFileSystem.class.getName()); Job job = new Job(hadoopConfig); // job执行作业的输入和输出文件的路径 FileInputFormat.addInputPath(job, new Path(dst)); FileOutputFormat.setOutputPath(job, new Path(dstOut)); // 指定Mapper和Reducer两个阶段的处理类 job.setMapperClass(TempMapper.class); job.setReducerClass(TempReducer.class); // 设置最后输出的Key和Value的类型 job.setOutputKeyClass(Text.class); job.setOutputValueClass(IntWritable.class); // 执行job,直到完成 job.waitForCompletion(true); System.out.println("finished"); } }
内容总结
以上是互联网集市为您收集整理的hadoop入门程序全部内容,希望文章能够帮你解决hadoop入门程序所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。