要想让Hadoop做的工作有意义就需要耐人寻味的数据。大家可以到
http://www.nber.org/patents/上下载专利数据集。本文使用了专利引用数据集cite75_99.txt.
这个数据集约有250MB,虽然没有一个真正的集群,但这个数据量的数据足以让我们心情澎湃的去练习MapReduce。而且一个流行的开发策略是为生产环境中的大数据集建立一个较小的,抽样的数据子集,称为开发数据集。这样,我们以单机或者伪分布模式编写程序来处理它们时,就能很容易去运行并调试。
cite75_99.txt里面的内容如下所示:
每行有两个数字,代表前面的新专利引用了后面的专利。我准备实现两个M/R任务,首先统计每个以前的专利被哪几个新专利引用,然后统计每个以前的专利被引用了多少次。
一:统计每个以前的专利被哪几个新专利引用
不多说,直接上代码
:
public class Potent_ByWhichCitation extends Configured implements Tool {
public static class CitationMapper extends Mapper<Object, Text, Text, Text> {
@Override
protected void map(Object key, Text value,
Mapper<Object, Text, Text, Text>.Context context)
throws IOException, InterruptedException {
// 根据逗号拆分
String[] str = value.toString().split(",");
context.write(new Text(str[1]), new Text(str[0]));
}
}
public static class IntSumReducer extends Reducer<Text, Text, Text, Text> {
@Override
protected void reduce(Text key, Iterable<Text> values,
Reducer<Text, Text, Text, Text>.Context context)
throws IOException, InterruptedException {
String csv = "";
for (Text val : values) {
if (csv.length() > 0)
csv += ',';
csv += val.toString();
}
context.write(key, new Text(csv));
}
}
public static void main(String[] args) throws Exception {
int res = ToolRunner.run(new Configuration(), new Potent_ByWhichCitation(), args);
System.exit(res);
}
@Override
public int run(String[] args) throws Exception {
Configuration conf = new Configuration();
String[] otherArgs = new GenericOptionsParser(conf, args)
.getRemainingArgs();
if (otherArgs.length != 2) {
System.err.println("Usage: wordcount <in> <out>");
System.exit(2);
}
@SuppressWarnings("deprecation")
Job job = new Job(conf, "potent analyse");
job.setJarByClass(Potent_CountsByCitation.class);
job.setMapperClass(CitationMapper.class);
job.setCombinerClass(IntSumReducer.class);
job.setReducerClass(IntSumReducer.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(Text.class);
FileInputFormat.addInputPath(job, new Path(otherArgs[0]));
FileOutputFormat.setOutputPath(job, new Path(otherArgs[1]));
System.exit(job.waitForCompletion(true) ? 0 : 1);
return 0;
}
}
代码很简单,就不解释了。运行我们可以直接在eclipse上点击Run Configurations然后添加输入输出文件夹,没有问题之后,然后Run on Hadoop,这样就能看到日志信息(当然要添加一个log4j.properties)。下面是counters信息和统计结果:
有强迫症的话就打包然后用命令行执行咯。
二:统计每个以前的专利被引用了多少次。
代码:
public class Potent_CountsByCitation {
public static class CitationMapper extends
Mapper<Object, Text, IntWritable, IntWritable> {
private final static IntWritable one = new IntWritable(1);
private IntWritable citation = new IntWritable();
@Override
protected void map(Object key, Text value,
Mapper<Object, Text, IntWritable, IntWritable>.Context context)
throws IOException, InterruptedException {
// 根据逗号拆分
String[] str = value.toString().split(",");
System.out.println(str[1]+" ");
citation.set(Integer.parseInt(str[1].toString()));
context.write(citation, one);
}
}
public static class IntSumReducer extends
Reducer<IntWritable, IntWritable, IntWritable, IntWritable> {
private IntWritable result = new IntWritable();
@Override
protected void reduce(
IntWritable key,
Iterable<IntWritable> values,
Reducer<IntWritable, IntWritable, IntWritable, IntWritable>.Context context)
throws IOException, InterruptedException {
int sum = 0;
for (IntWritable val : values)
sum += val.get();
result.set(sum);
context.write(key, result);
}
}
public static void main(String[] args) throws Exception {
Configuration conf = new Configuration();
String[] otherArgs = new GenericOptionsParser(conf, args)
.getRemainingArgs();
if (otherArgs.length != 2) {
System.err.println("Usage: wordcount <in> <out>");
System.exit(2);
}
@SuppressWarnings("deprecation")
Job job = new Job(conf, "potent analyse");
job.setJarByClass(Potent_CountsByCitation.class);
job.setMapperClass(CitationMapper.class);
job.setCombinerClass(IntSumReducer.class);
job.setReducerClass(IntSumReducer.class);
job.setOutputKeyClass(IntWritable.class);
job.setOutputValueClass(IntWritable.class);
FileInputFormat.addInputPath(job, new Path(otherArgs[0]));
FileOutputFormat.setOutputPath(job, new Path(otherArgs[1]));
System.exit(job.waitForCompletion(true) ? 0 : 1);
}
}
直接上结果:
这还是很简单的M/R,但是拿来入门还是很不错的。
- 大小: 98.1 KB
- 大小: 134.3 KB
- 大小: 83.5 KB
- 大小: 18.9 KB
分享到:
相关推荐
通过Hadoop等大数据处理工具对专利数据集进行深入分析,不仅可以帮助我们更好地理解专利之间的关系和技术发展趋势,还可以为技术创新提供有力的支持。未来随着更多专利数据的开放,我们有望进一步挖掘这些数据背后的...
我们将利用Apache Hadoop这一开源分布式计算框架,来处理海量的专利数据。 首先,了解Hadoop是至关重要的。Hadoop是一个基于Java的开源框架,它允许在分布式计算环境中存储和处理大规模数据集。其核心组件包括...
通过中英文混合检索,从检索要素中的关键词和IPC两个维度进行专利数据范围检索,并使用检索系统进行分析。 此外,文章提到了大数据市场规模的快速增长,以及互联网企业如阿里巴巴、腾讯等在大数据领域的战略布局。...
1. "地级市创新专利数据.dta" - 这是一个Stata数据文件,通常用于社会科学统计分析。它可能包含了关于各个地级市的详细专利统计数据,如每年申请的专利数量、类别(发明专利、实用新型专利、外观设计专利等)、专利...
标签“大数据”表明这个数据集的规模可能非常庞大,包含了大量关于专利的信息,可能需要使用大数据处理技术和工具来有效地进行分析和挖掘。大数据技术包括数据清洗、数据整合、数据存储(如Hadoop HDFS)、数据处理...
433.3 读和写 433.3.1 InputFormat 443.3.2 OutputFormat 493.4 小结 50第二部分 实战第4章 编写MapReduce基础程序 524.1 获得专利数据集 524.1.1 专利引用数据 534.1.2 专利描述数据 544.2 构建MapReduce程序的基础...
SPSS(Statistical Package for the Social Sciences)是一个集成的计算机软件程序,广泛用于社会科学研究数据的分析。SPSS以用户友好的界面和强大的数据管理功能著称,可以轻松进行各种统计分析。本文档介绍了IBM ...
标题中的“碳减排相关数据(学习使用).zip”表明这是一个包含有关碳减排的数据集,主要针对学习和研究目的。这个压缩包包含了不同时间段内上市公司的碳排放与减排相关的重要数据,具体涵盖低碳专利授权、温室气体...
LEAP 提供了软硬件一体化优化,突破计算平台性能瓶颈批量处理性能查询性能实时处理性能复杂计算,专利的智能调度技术,提升 Hadoop 计算效能 5x~20x,虚拟大数据系统,简化异地数据中心的数据同步,率先支持 Spark ...
Pig是一个高层次的数据流语言和执行框架,用于简化对Hadoop数据的处理过程,Hawq也可以与Pig集成,以实现对复杂数据集的高效查询。 综上所述,Hawq以其对SQL的支持、出色的性能以及与Hadoop的紧密集成,成为了在...
- **HDFS (Hadoop Distributed File System)**:用于存储大规模数据集,支持高吞吐量的数据访问。 - **MapReduce**:并行处理框架,能够将任务分割并在集群上并行执行。 - **HBase**:分布式、面向列的NoSQL...
5. Hadoop MapReduce:这是一个分布式计算框架,用于处理和生成大规模数据集。在这里,它被用来支持大规模的专利文本挖掘任务。 6. 专利文本挖掘:通过对专利文献的分析,提取技术特征、发明者信息、专利引用关系等...
这本书《Taming Big Data with Apache Spark and Python》由Frank Kane所著,主要讲解了如何使用Apache Spark和Python来分析大规模数据集,并提供了真实的案例帮助读者理解和实践。Apache Spark是一个开源的分布式...
Hadoop分布式文件系统(HDFS)是Hadoop生态系统中的核心组件之一,主要用于存储大规模数据集。HDFS的设计理念是通过简单的数据一致性模型来提供高吞吐量的数据访问能力,适用于大型分布式系统环境。 #### 数据存放...
以前,由于数据收集和处理能力的限制,情报分析往往依赖于抽样调查和小规模的数据集。如今,大数据技术使得我们可以近乎实时地获取全球范围内的科技动态,包括科研成果、专利申请、学术论文等,极大地拓宽了情报收集...
4. **公开数据库和档案**:政府、学术机构和企业公开的数据集可以提供大量有价值的信息,例如开放政府数据(Open Data)、专利数据库和学术论文库。 5. **网络爬虫**:使用自定义或预构建的网络爬虫程序遍历整个...
MapReduce是一种编程模型,用于大规模数据集(大数据)的并行运算。它最初由Google提出,后成为Hadoop的核心组件,广泛应用于分布式计算领域。MapReduce的编程模式、实现方法、技巧、性能和经验等方面的内容在Google...