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

Hadoop 统计专利被引用次数(二)

 
阅读更多

一、在(一)中,我们计算出专利被那些专利所引用,在此基础上计算被引用的次数,不难实现。我们用两种方法来完成。代码(1)如下:

 

import java.io.IOException;

import org.apache.hadoop.conf.Configured;
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.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.input.KeyValueTextInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat;
import org.apache.hadoop.util.Tool;
import org.apache.hadoop.util.ToolRunner;

public class PatentCitationsCount extends Configured implements Tool{
	
	public static class PatentCitationsCountMapper extends Mapper<Text, Text, Text, IntWritable> {
		private final IntWritable length = new IntWritable();
		@Override
		protected void map(Text key, Text value, Context context) throws IOException, InterruptedException {
			String[] array = value.toString().split("[,]");
			length.set(array.length);
			context.write(key, length);
		}
	}
	
	public static class PatentCitationsCountReducer extends Reducer<Text, IntWritable, Text, IntWritable> {
		private final IntWritable sumResult = new IntWritable();
		@Override
		protected void reduce(Text key, Iterable<IntWritable> values,Context context) throws IOException, InterruptedException {
			int sum = 0;
			for (IntWritable intWritable : values) {
				sum += intWritable.get();
			}
			sumResult.set(sum);
			context.write(key, sumResult);
		}
	}
	
	@Override
	public int run(String[] args) throws Exception {
		Job job = new Job(getConf());
		job.setJarByClass(getClass());
		job.setJobName("patentcitationscount");
		
		job.setMapperClass(PatentCitationsCountMapper.class);
		job.setReducerClass(PatentCitationsCountReducer.class);
		job.setCombinerClass(PatentCitationsCountReducer.class);
		
		job.setInputFormatClass(KeyValueTextInputFormat.class);
		job.setOutputKeyClass(TextOutputFormat.class);
		
		FileInputFormat.setInputPaths(job, new Path("/patent/test/input/patentcitationscount.txt"));
		FileOutputFormat.setOutputPath(job, new Path("/patent/test/outnput"));
		
		job.setOutputKeyClass(Text.class);
		job.setOutputValueClass(IntWritable.class);
		
		boolean success = job.waitForCompletion(true);
		return success ? 0 : 1;
	}

	public static void main(String[] args) throws Exception {
		int result = ToolRunner.run(new PatentCitationsCount(), args);
		System.exit(result);
	}
	
}

 代码2如下:

import java.io.IOException;

import org.apache.hadoop.conf.Configured;
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.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.input.KeyValueTextInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat;
import org.apache.hadoop.util.Tool;
import org.apache.hadoop.util.ToolRunner;

public class PatentCitationsCountOther extends Configured implements Tool {

	public static class CountOtherMapper extends Mapper<Text, Text, Text, Text> {

		@Override
		protected void map(Text key, Text value, Context context)
				throws IOException, InterruptedException {
			context.write(key, value);
		}
	}

	public static class CountOtherReducer extends
			Reducer<Text, Text, Text, IntWritable> {
		private IntWritable result = new IntWritable();

		@Override
		protected void reduce(Text key, Iterable<Text> values, Context context)
				throws IOException, InterruptedException {
			int sum = 0;
			for (Text text : values) {
				String[] array = text.toString().split("[,]");
				sum += array.length;
			}
			result.set(sum);
			context.write(key, result);
		}
	}

	@Override
	public int run(String[] args) throws Exception {
		Job job = new Job(getConf());
		job.setJarByClass(getClass());
		job.setJobName("patentcitationscountother");

		job.setMapperClass(CountOtherMapper.class);
		job.setReducerClass(CountOtherReducer.class);

		job.setInputFormatClass(KeyValueTextInputFormat.class);
		job.setOutputFormatClass(TextOutputFormat.class);

		job.setOutputKeyClass(Text.class);
		job.setOutputValueClass(IntWritable.class);

		FileInputFormat.setInputPaths(job, new Path(
				"/patent/test/input/patentcitationscount.txt"));
		FileOutputFormat.setOutputPath(job, new Path("/patent/test/outnput"));

		boolean success = job.waitForCompletion(true);

		return success ? 0 : 1;
	}

	public static void main(String[] args) throws Exception {
		int result = ToolRunner.run(new PatentCitationsCountOther(), args);
		System.exit(result);
	}
}

 都可以实现相同的功能。但我不知道谁更好?

分享到:
评论

相关推荐

    Hadoop按日期统计访问次数及测试数据

    本篇将深入探讨如何利用Hadoop按日期统计访问次数,并结合测试数据进行实战解析。 首先,Hadoop的数据处理通常涉及日志分析,例如网站访问日志。这些日志记录了用户的访问行为,包括访问时间、页面、IP地址等信息。...

    Hadoop统计单词出现次数.rar

    这个压缩包"**Hadoop统计单词出现次数.rar**"显然包含了实现一个基本Hadoop MapReduce程序的源代码,用于统计文本中的单词出现次数。这个过程是大数据分析中的经典示例,通常被称为WordCount。我们将详细探讨这个...

    基于hadoop的词频统计.docx

    在本课程设计中,学生将通过 Hadoop 平台,利用 MapReduce 编程统计《哈姆雷特》的词频,即计算每个词汇出现的次数。这个任务展示了 MapReduce 在文本分析和数据挖掘中的应用。在 map 阶段,每个单词被提取并计数,...

    hadoop实现用户数和用户拨打电话的次数统计.zip

    在大数据处理领域,Hadoop是一个不可或缺的开源框架,它主要用于处理和存储海量数据。本示例中的"had

    Hadoop词频统计(完整版)

    完整的词频统计MapReduce版本。基于Hadoop2.2.0,包含一个十万单词左右的测试文件。请参照 http://blog.csdn.net/zythy/article/details/17888439 获取详细解说。

    Hadoop中单词统计案例运行的代码

    在这个"单词统计案例"中,我们将深入探讨Hadoop如何处理文本数据,进行简单的单词计数任务。这个任务是Hadoop初学者经常接触的经典示例,它展示了Hadoop MapReduce的基本工作原理。 MapReduce是Hadoop的核心计算...

    hadoop流量统计程序

    "hadoop流量统计程序"是基于Hadoop平台设计的一种工具,用于收集、处理和分析网络流量数据。这个程序能够帮助网络管理员或者数据分析人员有效地监控和理解网络活动,识别潜在的流量异常,以及优化网络资源的分配。 ...

    Hadoop学习统计上网流量源数据

    该文件可以帮助我们练习Hadoop的统计功能。

    hadoop词频统计课设报告书.pdf

    hadoop词频统计完整版!!!!!!!包含代码以及详细步骤。................................................................................................

    大数据 hadoop mapreduce 词频统计

    【大数据Hadoop MapReduce词频统计】 大数据处理是现代信息技术领域的一个重要概念,它涉及到海量数据的存储、管理和分析。Hadoop是Apache软件基金会开发的一个开源框架,专门用于处理和存储大规模数据集。Hadoop的...

    Hadoop 分析统计学生考试成绩1

    "Hadoop 分析统计学生考试成绩" 本资源综合了 Hadoop 分析统计学生考试成绩的实现,涵盖了从开发环境到项目结构、代码文件说明、程序运行方式等方面。 一、开发环境 项目需要 Win 10 64 位或 macOS High Sierra ...

    hadoop简单单词统计

    在这个“hadoop简单单词统计”的项目中,我们看到了开发者首次尝试使用Hadoop进行程序编写,实现了对文本数据进行单词统计的功能。这个过程中涉及到的核心知识点包括Hadoop的MapReduce编程模型、Hadoop分布式文件...

    mapreduce在hadoop实现词统计和列式统计

    **二、词统计(mrwordcount)** 词统计是MapReduce的一个经典应用,用于计算文本文件中各个单词出现的频率。在Hadoop的mrwordcount工程中,它通常包含以下步骤: 1. **Mapper**:Mapper读取文本文件,逐行处理。...

    Hadoop课程实验和报告——每年申请美国专利的国家数统计

    在本Hadoop课程实验中,我们关注的主题是“每年申请美国专利的国家数统计”。这个实验旨在通过大数据处理技术,分析各国在美国专利申请的数量,从而揭示全球创新活动的分布情况。我们将利用Apache Hadoop这一开源...

    第二章(Hadoop大数据处理实战)搭建Hadoop分布式集群.pdf

    第二章(Hadoop大数据处理实战)搭建Hadoop分布式集群.pdf第二章(Hadoop大数据处理实战)搭建Hadoop分布式集群.pdf第二章(Hadoop大数据处理实战)搭建Hadoop分布式集群.pdf第二章(Hadoop大数据处理实战)搭建Hadoop分布式...

    基于Hadoop的成绩分析系统.docx

    基于Hadoop的成绩分析系统 本文档介绍了基于Hadoop的成绩分析系统的设计和实现。Hadoop是一个分布式开源计算平台,具有高可靠性、高扩展性、高效性和高容错性等特点。该系统使用Hadoop的分布式文件系统HDFS和...

    hadoop统计服务器kpi

    2. **CPU利用率**:反映Hadoop节点的计算能力是否被充分利用,过高可能导致资源浪费,过低则可能表示系统负载不足。 3. **内存使用**:监控MapReduce任务的内存消耗,过高可能导致任务失败,过低可能表示资源未充分...

    Hadoop权威指南中文版(第二版)+Hadoop in Action

    《Hadoop权威指南中文版(第二版)》与《Hadoop in Action》及《Pro Hadoop》这三本书是深入理解和掌握Hadoop生态系统的关键资源。Hadoop作为一个分布式计算框架,其核心是解决大规模数据处理的问题,它允许在廉价...

    词频统计(基于hadoop集群,python实现)

    2. **Shuffle和Sort阶段**:Hadoop会自动对map阶段产生的键值对进行分区和排序,确保相同键的值被发送到同一个reduce任务。 3. **Reduce阶段**:在reduce函数中,我们接收所有相同的键(这里是相同的单词)及其对应...

Global site tag (gtag.js) - Google Analytics