`
yehao0716
  • 浏览: 22716 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

hadoop学习——arrayWritable的应用

阅读更多

 

 

 

 

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实战——初级部分学习笔记 2

    本文将基于私塾在线《Hadoop实战——初级部分》的学习笔记,深入探讨Hadoop的基本概念、核心组件以及在实际中的应用。 #### 二、为何选择学习Hadoop 1. **市场需求**:当前社会产生了大量的数据,例如每分钟...

    Hadoop2.7.1——NFS部署

    ### Hadoop 2.7.1 —— NFS 部署详解 #### 一、概述 随着大数据技术的发展,Hadoop作为主流的大数据处理框架之一,其分布式存储系统HDFS得到了广泛的应用。为了提高Hadoop集群的数据访问效率,通常会采用网络文件...

    Hadoop原理——让你快速理解掌握Hadoop

    为何Hadoop是分布式大数据处理的未来?如何掌握Hadoop? Hadoop的历史  始于2002年的apache项目Nutch  2003年Google发表了关于GFS的论文  2004年Nutch的开发者开发了NDFS  2004年Google发表了关于MapReduce的...

    hadoop 权威——指南 第3版

    hadoop 权威指南 第3版,很好的书本,希望大家喜欢。pdf

    大数据学习指南合集(Hadoop、Spark、Flink等)

    Hadoop——分布式文件管理系统HDFS   2. Hadoop——HDFS的Shell操作   3. Hadoop——HDFS的Java API操作   4. Hadoop——分布式计算框架MapReduce   5. Hadoop——MapReduce案例   6. Hadoop——资源调度器...

    Hadoop高级编程——构建与实现大数据解决方案.rar

    本压缩包“Hadoop高级编程——构建与实现大数据解决方案”将深入探讨如何利用Hadoop进行高效的数据操作,构建实际的大数据解决方案。 一、Hadoop概述 Hadoop是由Apache基金会开发的开源项目,主要由Hadoop ...

    Hadoop课程实验和报告——Hadoop安装实验报告

    Hadoop课程实验和报告——Hadoop安装实验报告 Hadoop是一个开源的大数据处理框架,由Apache基金会开发和维护。它提供了一种可靠、可扩展、可高效的方法来存储和处理大规模数据。在本实验报告中,我们将介绍Hadoop的...

    《Hadoop大数据技术与应用》课程教学大纲 - 20190422.pdf

    《Hadoop大数据技术与应用》课程是一门专为数据科学和大数据方向的本科生设计的必修课,旨在让学生深入理解并掌握Hadoop平台及其主要组件的使用。这门课程包括理论教学和实践两大部分,旨在培养学生的工程师思维方式...

    Hadoop简单应用案例

    这个"**Hadoop简单应用案例**"涵盖了Hadoop生态系统中的多个关键组件,包括MapReduce、HDFS、Zookeeper以及Hive,这些都是大数据处理的核心工具。下面将详细讲解这些知识点。 1. **MapReduce**:MapReduce是Hadoop...

    Hadoop学习资料

    以上总结的知识点均来自给定文件的内容,涵盖了Hadoop的学习资料、版本历史、生态圈、安装、HDFS、MapReduce、Zookeeper、HBase、Hive、Storm以及数据挖掘和推荐系统等多个方面,为学习和使用Hadoop提供了全面的理论...

    Hadoop在雅虎的应用

    ### Hadoop在雅虎的应用详解 #### 一、引言 随着互联网的飞速发展,海量数据处理成为了各个大型互联网公司的必备技术能力。雅虎作为全球知名的互联网公司,在早期便开始采用并发展Hadoop这一开源分布式计算框架来...

    Hadoop学习笔记

    Hadoop学习笔记,自己总结的一些Hadoop学习笔记,比较简单。

    Hadoop高级编程- 构建与实现大数据解决方案

    8. **性能优化**:学习如何通过调整各种参数,如Split大小、Mapper和Reducer的数量,以及数据本地性等,来提升Hadoop应用的性能。 9. **Hadoop集群的部署和管理**:掌握在单机、伪分布式和完全分布式模式下安装和...

    最新Hadoop生态圈开发学习资料——尚硅谷

    在大数据领域,Hadoop生态圈是不可或缺的重要组成部分,它为海量数据的存储、处理和分析提供了高效可靠的...这份"最新Hadoop生态圈开发学习资料——尚硅谷"将是你学习过程中宝贵的资源,助你在大数据的世界中游刃有余。

    hadoop大数据平台技术与应用 --课后习题参考答案.pdf

    根据给定文件的内容部分,我们可以提炼出以下几个知识点: 1. 大数据业务处理基本流程与关键技术 ...在实际的Hadoop学习和应用中,这些知识点是非常重要的基础,有助于理解和操作Hadoop集群以及处理大数据问题。

Global site tag (gtag.js) - Google Analytics