package kpi; import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.ArrayWritable; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.NullWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.io.Writable; 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; public class ArrayWritableTest { public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException, URISyntaxException { Configuration conf = new Configuration(); FileSystem fileSystem = FileSystem.get(new URI("hdfs://hadoop:9000/"), conf); fileSystem.delete(new Path("/kpi__data_out_1"), true); Job job = new Job(conf, KpiWritable1.class.getName()); job.setJarByClass(KpiWritable1.class); FileInputFormat.setInputPaths(job, new Path( "hdfs://hadoop:9000/kpi_data")); FileOutputFormat.setOutputPath(job, new Path( "hdfs://hadoop:9000/kpi__data_out_1")); job.setMapperClass(MyMapper.class); job.setReducerClass(MyReducer.class); job.setMapOutputKeyClass(Text.class); job.setMapOutputValueClass(LongArrayWritable.class); job.setOutputKeyClass(Text.class); job.setOutputValueClass(NullWritable.class); job.waitForCompletion(true); } static class MyMapper extends Mapper<LongWritable, Text, Text, LongArrayWritable> { Text key2 = new Text(); @Override protected void map( LongWritable key, Text value, org.apache.hadoop.mapreduce.Mapper<LongWritable, Text, Text, LongArrayWritable>.Context context) throws IOException, InterruptedException { String[] split = value.toString().split("\t"); key2.set(split[1]); String[] traffic = new String[4]; traffic[0] = split[6]; traffic[1] = split[7]; traffic[2] = split[8]; traffic[3] = split[9]; LongArrayWritable arrayWritable = new LongArrayWritable(traffic); context.write(key2, arrayWritable); } } static class MyReducer extends Reducer<Text, LongArrayWritable, Text, NullWritable> { private Text key3 = new Text(); @Override protected void reduce( Text key2, Iterable<LongArrayWritable> val2s, org.apache.hadoop.mapreduce.Reducer<Text, LongArrayWritable, Text, NullWritable>.Context context) throws IOException, InterruptedException { long sum1 = 0; long sum2 = 0; long sum3 = 0; long sum4 = 0; for (LongArrayWritable traffic : val2s) { Writable[] writables = traffic.get(); sum1 += Long.valueOf(writables[0].toString()); sum2 += Long.valueOf(writables[1].toString()); sum3 += Long.valueOf(writables[2].toString()); sum4 += Long.valueOf(writables[3].toString()); } key3.set(key2 + " " + sum1 + " " + sum2 + " " + sum3 + " " + sum4); context.write(key3, NullWritable.get()); } } static class LongArrayWritable extends ArrayWritable { public LongArrayWritable() { super(LongWritable.class); } public LongArrayWritable(String[] string) { super(LongWritable.class); LongWritable[] longs = new LongWritable[string.length]; for (int i = 0; i < longs.length; i++) { longs[i] = new LongWritable(Long.valueOf(string[i])); } set(longs); } } }
相关推荐
本文将基于私塾在线《Hadoop实战——初级部分》的学习笔记,深入探讨Hadoop的基本概念、核心组件以及在实际中的应用。 #### 二、为何选择学习Hadoop 1. **市场需求**:当前社会产生了大量的数据,例如每分钟...
### Hadoop 2.7.1 —— NFS 部署详解 #### 一、概述 随着大数据技术的发展,Hadoop作为主流的大数据处理框架之一,其分布式存储系统HDFS得到了广泛的应用。为了提高Hadoop集群的数据访问效率,通常会采用网络文件...
为何Hadoop是分布式大数据处理的未来?如何掌握Hadoop? Hadoop的历史 始于2002年的apache项目Nutch 2003年Google发表了关于GFS的论文 2004年Nutch的开发者开发了NDFS 2004年Google发表了关于MapReduce的...
hadoop 权威指南 第3版,很好的书本,希望大家喜欢。pdf
Hadoop——分布式文件管理系统HDFS 2. Hadoop——HDFS的Shell操作 3. Hadoop——HDFS的Java API操作 4. Hadoop——分布式计算框架MapReduce 5. Hadoop——MapReduce案例 6. Hadoop——资源调度器...
本压缩包“Hadoop高级编程——构建与实现大数据解决方案”将深入探讨如何利用Hadoop进行高效的数据操作,构建实际的大数据解决方案。 一、Hadoop概述 Hadoop是由Apache基金会开发的开源项目,主要由Hadoop ...
Hadoop课程实验和报告——Hadoop安装实验报告 Hadoop是一个开源的大数据处理框架,由Apache基金会开发和维护。它提供了一种可靠、可扩展、可高效的方法来存储和处理大规模数据。在本实验报告中,我们将介绍Hadoop的...
《Hadoop大数据技术与应用》课程是一门专为数据科学和大数据方向的本科生设计的必修课,旨在让学生深入理解并掌握Hadoop平台及其主要组件的使用。这门课程包括理论教学和实践两大部分,旨在培养学生的工程师思维方式...
这个"**Hadoop简单应用案例**"涵盖了Hadoop生态系统中的多个关键组件,包括MapReduce、HDFS、Zookeeper以及Hive,这些都是大数据处理的核心工具。下面将详细讲解这些知识点。 1. **MapReduce**:MapReduce是Hadoop...
以上总结的知识点均来自给定文件的内容,涵盖了Hadoop的学习资料、版本历史、生态圈、安装、HDFS、MapReduce、Zookeeper、HBase、Hive、Storm以及数据挖掘和推荐系统等多个方面,为学习和使用Hadoop提供了全面的理论...
### Hadoop在雅虎的应用详解 #### 一、引言 随着互联网的飞速发展,海量数据处理成为了各个大型互联网公司的必备技术能力。雅虎作为全球知名的互联网公司,在早期便开始采用并发展Hadoop这一开源分布式计算框架来...
Hadoop学习笔记,自己总结的一些Hadoop学习笔记,比较简单。
8. **性能优化**:学习如何通过调整各种参数,如Split大小、Mapper和Reducer的数量,以及数据本地性等,来提升Hadoop应用的性能。 9. **Hadoop集群的部署和管理**:掌握在单机、伪分布式和完全分布式模式下安装和...
在大数据领域,Hadoop生态圈是不可或缺的重要组成部分,它为海量数据的存储、处理和分析提供了高效可靠的...这份"最新Hadoop生态圈开发学习资料——尚硅谷"将是你学习过程中宝贵的资源,助你在大数据的世界中游刃有余。
根据给定文件的内容部分,我们可以提炼出以下几个知识点: 1. 大数据业务处理基本流程与关键技术 ...在实际的Hadoop学习和应用中,这些知识点是非常重要的基础,有助于理解和操作Hadoop集群以及处理大数据问题。