草庐IT

hadoop - 通过 map reduce 中的 map 函数的文件

是否可以通过每个map函数以某种方式传递一组文件。要求是针对不同的2个操作并行处理每个文件。我是mapreduce的新手,我使用JAVA作为我的编程语言。 最佳答案 如果你想获得相同的文件作为所有映射器的输入,只读访问,是的。您可以将文件从主(驱动程序)类添加到所谓的分布式缓存中。可以找到更多详细信息here. 关于hadoop-通过mapreduce中的map函数的文件,我们在StackOverflow上找到一个类似的问题: https://stackove

hadoop - 映射后的多个(独立)reduce 函数

我的map函数为相同的数据发出两种不同的键值对。当然,我需要2个独立的reduce函数来处理这个问题。可能吗?比如,我可以在map的末尾有多个output.collect()语句,并附加一个指定reducer的参数吗?我试着查找它,但找不到任何东西。 最佳答案 您应该考虑使用MultipleOutputs类(class)。它有漂亮且不言自明的文档。 关于hadoop-映射后的多个(独立)reduce函数,我们在StackOverflow上找到一个类似的问题:

java - 如何将 Set<List<Set<Integer>>> 传递给 hadoop map reduce 作业

我需要向map/reduce(hadoop实现)传递一个类型的参数Set>>对于hadoop类JobConf,我可以使用setInt、setFlot、setString、ecc,但如果我想设置“一个集合”或一个列表,是否可行?怎么办? 最佳答案 我没有找到任何通过“setter”方法来做到这一点的方法。但是,您可以将此Collection写入文件,然后将此文件添加到DistributedCache并从映射器/缩减器的配置中加载它。 关于java-如何将Set>>传递给hadoopmapr

mysql - 使用关系数据库进行 Map Reduce

我有2个关系表表A(第1个人,阅读的书名)表B(书名,作者姓名)我正在创建一个map-reduce作业,它按作者计算表1中每个人阅读的书籍。这意味着如果同一作者有2本书并且该人阅读了这两本书,那么map-reduce将产生:(人1,作者1、2);我的map功能(在元级别)是:map{emit(TableB.BookTitle,1)}我的reduce函数是:reducefunction(title,values){while(values.hasNext()){if(title==tableA.bookRead)sum+=values}output.collect(tableA.pers

java - Eclipse 如何运行 map reduce 作业?

我关注了一篇文章,并设法在eclipse中运行了一个mapreduce程序。下面是pom.xml文件4.0.0virtusafazlan0.0.1-SNAPSHOTjarfazlanhttp://maven.apache.orgUTF-8junitjunit3.8.1testorg.apache.hadoophadoop-client2.2.0Maven安装必要的jar,当我将程序作为java应用程序运行时,输出按预期保存。据我所知,Hadoop可以在3种模式下运行。1)Singlenode2)psuedo-distributedmode3)distributedmode我假设ecli

Hadoop Map-reduce编程语法错误

我的输入是很多文本文件。我希望我的map-reduce程序将所有文件名和相关句子写入一个输出文件中,我只想从映射器发出文件名(键)和相关句子(值).reducer将收集键和所有值,并在输出中写入文件名及其关联的句子。这是我的mapper和reducer的代码:importjava.io.IOException;importjava.util.*;importorg.apache.hadoop.fs.Path;importorg.apache.hadoop.io.*;importorg.apache.hadoop.mapred.*;publicclassWordCount{publics

Hadoop 基础 :Number of map tasks mappers reduce tasks reducers

映射器和映射任务有什么区别?同样,reducer和reduce任务?此外,在执行mapreduce任务期间如何确定映射器、maptasks、reducer、reducetasks的数量?如果有的话,给出它们之间的相互关系。 最佳答案 简单来说maptask就是Mapper的一个实例。Mapper和reducer是mapreduce作业中的方法。当我们运行mapreduce作业时,生成的map任务数取决于输入中的block数(block数取决于输入拆分)。然而,reduce任务的数量可以在mapreduce驱动程序代码中指定。可以通过

java - 如何读取每个reduce任务的计数器(例如,输出记录数)

我正在运行迭代hadoop/mapreduce作业来分析某些数据。(apachehadoop版本1.1.0)我需要知道每个reduce任务的输出记录数才能运行M/R作业的下一次迭代。我可以在每个M/R作业后读取合并计数器,但我找不到单独读取每个任务计数器的方法。请就此告诉我。崔 最佳答案 计数器不是这样工作的:每个任务都将其指标报告给一个中心点,因此无法从各个任务中获知计数器值。来自这里:http://www.thecloudavenue.com/2011/11/retrieving-hadoop-counters-in-mapre

java - hadoop map reduce作业没有输出

我在Netbeans中编写MapReduce作业并生成(也在NB中)一个jar文件。当我尝试在hadoop(版本1.2.1)中执行此作业时,我执行此命令:$hadoopjarjob.jarorg.job.mainClass/home/user/in.txt/home/user/outdir此命令不显示任何错误,但不创建outdir、outfiles、...这是我的工作代码:映射器publicclassMapperextendsMapReduceBaseimplementsorg.apache.hadoop.mapred.Mapper{privatefinalIntWritableone

java - 将数据写入 MySQL 数据库时 map reduce 作业中的类转换异常

我正在尝试使用mapreduce作业将数据加载到mysql数据库中,但是我遇到了类转换异常错误,这是我使用的过程:我首先创建一个实现了Writable和DBWritable接口(interface)的DBOutputWritable类。然后我使用我的reduce作业将数据写入数据库,但是当我运行该作业时,它失败了,提示有错误:java.lang.ClassCastException:com.amalwa.hadoop.DataBaseLoadMapReduce.DBOutputWritablecannotbecasttoorg.apache.hadoop.mapreduce.lib.d