jjzjj

Hadoop MapReduce : Two values as key in Mapper-Reducer

如何使用两个组件构建key?这样做的原因是我有一个无向图。如果A和B通过通信关联(方向无关),则两个节点A和B之间存在边。此通信有一个数字参数。所以我想实现的是有一个将A和B组合在一起作为一个集合的key,这样A到B和B到A的通信就可以被认为是等价的,并且可以被加起来得到统计数据说:AB5BA10键在语义上应该是“A或B在一起”,这样包含A和B作为键的集合的值应该是5+10=15。wordcount示例将特定单词作为关键字。就我而言,我想将包含两个组件的集合作为关键。在map和reduce阶段,只要满足AtoB或BtoA就求和。谢谢! 最佳答案

hadoop - 针对不同映射器的 HBase MapReduce 拆分扫描

我正在努力以正确的方式为多个maptask分配我的HBase行。我的目标是通过行键拆分我的扫描,并将一组行分别分配给map作业。到目前为止,我只能定义一个扫描,其中我的映射器一次总是获取一行。但这不是我想要的-我需要map-inputset-wise。那么是否有可能拆分我的HBase表resp。扫描成n组行,然后输入n个映射器?我不是在寻找一种解决方案来启动一个MapReduce作业来编写n个文件,然后另一个MapReduce作业将它们作为文本输入再次读回以获取这些集合。提前致谢! 最佳答案 Mappers每次总是获取一行——这就是

hadoop - hadoop中的总订单分区器

我对totalorderpartitioner的概念完全陌生,我已经应用了这个概念,但我没有成功地产生全局排序。这是我的输入记录67657674897685766895768578678576857685786785786757658976857896758796795871个5个6个78个902个3个5个6个9这是我的映射器publicvoidmap(LongWritablekey,Textvalue,OutputCollectoroutputCollector,Reporterreporter)throwsIOException{//TODO自动生成的方法stuboutputCol

Hadoop-> Mapper->我们如何从给定输入路径的每个文件中只读取前 N 行?

我是Hadoop的新手,我的要求是我只需要处理每个输入文件的前10行。以及如何在读取每个文件的10行后退出映射器。如果有人能提供一些示例代码,那将是很大的帮助。提前致谢。 最佳答案 您可以重写您的映射器的运行方法,一旦您将map循环迭代10次,您就可以从while循环中中断。这将假定您的文件不可拆分,否则您将从每个拆分中获得前10行:@Overridepublicvoidrun(Contextcontext)throwsIOException,InterruptedException{setup(context);introws=0

java - Hadoop 映射器输出到 HBase 表和一个缩减器

我正在尝试编写一个MapReduce作业来解析CSV文件,将数据存储在HBase中,并一次性执行reduce函数。理想情况下我想要Mapper输出好的记录到HBaseTableGOODMapper输出坏记录到HBase表BADMapper使用key将所有好的数据发送到reducer还想更新第三个表以指示存在新数据。该表将包含有关数据和日期的基本信息。每个CSV文件很可能只有一两条记录。我知道如何使用HBaseMultiTableOutputFormat执行1和2,但不确定如何执行3和4。非常感谢任何有关如何执行此操作的指示。我对如何做到这一点有一些想法:对于1和2,我将Immutabl

java - Hadoop Mappers 是否仅在本地执行?

我遇到这样一种情况,文件的整个block位于一台机器上,默认复制因子为1。在这种情况下,如果我在我的集​​群上启动hadoop,我觉得我所有的映射任务将只在一台机器上运行,因为block只存在于那台机器上。这样对吗?本地映射器任务执行是一个约束还是只是一个优先级?如果是,是否可以通过将block复制到本地磁盘来配置映射器任务也在其他机器上运行?第二个问题是,即使mapper任务只在一台机器上运行,通过复制mapper的中间数据在所有其他机器上启动reducer是否正确? 最佳答案 数据本地执行只是一个优先级,而不是约束条件。如果其他

java - Mapper 类是在每个作业的基础上初始化的吗?

我正在使用Hadoop,我想使用静态变量来减少必须进行的方法调用次数。以下是我如何使用静力学:publicclassMapperextendsMapper{protectedstaticvolatileStringmyVar;@Overridepublicfinalvoidsetup(Contextcontext){if(myVar==null)myVar=context.getConfiguration().get("myOpt");}}我知道每个map任务都会初始化一个Mapper。我担心的是Mapper类本身被初始化一次,然后在作业之间保持初始化状态。因此,如果我运行job1,m

java - Hadoop 为每个映射器使用一个实例

我正在使用Hadoop的mapreduce来解析xml文件。所以我有一个名为Parser的类,它可以有一个方法parse()来解析xml文件。所以我应该在Mapper的map()函数中使用它。然而,这意味着每次当我想调用一个Parser时,我都需要创建一个Parser实例。但是这个实例对于每个map作业应该是相同的。所以我想知道是否可以只实例化此Parser一次?还有一个附加问题,为什么Mapper类总是静态的? 最佳答案 为确保每个Mapper一个解析器实例,请使用映射器设置方法来实例化您的解析器实例,并使用清理方法进行清理。同样

hadoop - 为什么不为 hadoop TeraSort 映射器/ reducer

我计划在Hadoop0.20.2中的TeraSort类的映射器中插入一些代码。但是查看源码,找不到mapper实现的那段。通常,我们会看到一个名为job.setMapperClass()的方法,它指示映射器类。但是,对于TeraSort,我只能看到setInputformat、setOutputFormat之类的东西。我找不到调用mapper和reduce方法的位置?任何人都可以对此提供一些提示吗?谢谢,源码是这样的,publicintrun(String[]args)throwsException{LOG.info("starting");JobConfjob=(JobConf)ge

java - Hadoop - 为特定节点的 Mapper 中的每个 map() 函数创建类的单个实例

我在java中有一个类似这样的类用于hadoopMapReducepublicClassMyClass{publicstaticMyClassMapperextendsMapper{staticSomeClasssomeClassObj=newSomeClass();voidmap(ObjectKey,Textvalue,Contextcontext){StringsomeText=someClassObj.getSomeThing();}}}我只需要someClassObj的单个实例可用于map()函数每个节点。如何实现?如果您需要有关此主题的更多详细信息,请随时询问。谢谢!