草庐IT

reduce_ex

全部标签

java - 在hadoop中reduce后处理数据

我有一个文本文件:A1A4A2B8B1我想计算maxA(4)和maxB(8)的平均值。首先,在mapper中,我通过键将数据传递给reducer,在reducer中,我找到该键的最大值。但是我如何计算它们减少后的平均值呢? 最佳答案 如果您只让映射器输出键的最大值,那么您将无法从缩减器的输出中检索键的平均值。根本没有足够的信息。要么在reducer处理期间取平均值并将其与最大值一起输出(可能由一些定界符分隔以便于解析),要么运行另一个map-reduce作业以计算平均值。 关于java-

java - map reduce程序在hadoop框架中实现数据结构

这是Hadoop中的数据结构实现。我想使用map-reduce编程在Hadoop中实现索引。第1部分=我想使用表中的索引号将此文本文件的每个单词存储起来。[能够完成]第2部分=现在我想为这个新创建的表执行散列[无法完成]第一部分我能够完成,但第二部分我遇到困难假设我有一个包含3行的文本文件:你的工作怎么样你的家人好吗嗨,你好吗我想使用索引存储这个文本文件。我有map-reduce代码返回每个单词的索引值,这个索引值我可以存储在索引表(哈希表)中包含每个单词的索引值的输出:0,怎么14,是3,是18岁,工作12,你的7,现在要存储在哈希表中,对带有模块(文件中不同元素的数量)的每个单词

hadoop - 当某些键集的值过多时如何平衡 reducer ?

由于数据不是很均衡,按key(must)聚类时,有的key集数据多,有的少。在这种情况下我该如何平衡?我已经研究了InputSampler,它会起作用吗? 最佳答案 您可以实现自定义哈希分区器,这样您就可以将更高频率的键发送到一个缩减器,而将所有其他键以更低的频率发送到其他缩减器。publicstaticclassAgePartitionerextendsPartitioner{@OverridepublicintgetPartition(Textkey,Textvalue,intnumReduceTasks){//wehavemo

c# - 通过 .net SDK : All MapReduce jobs run with 1 reducer 配置的 HDInsight 集群

我对Hadoop相对缺乏经验,但在过去一年左右的时间里我一直在使用样板代码,通过HDInsight.netSDK编写和提交C#MapReduce控制台应用程序。这些工作似乎不断地与许多映射器一起运行,但只有一个reducer。我的reducer承担了相当多的繁重工作,因此只有一个reducer似乎成了瓶颈。通常我可以通过RDP进入集群并观察作业像液体黄金一样运行,然后在reducer启动时磨成……非常慢的东西)。我如何控制应用于reducer的资源量?我可以将更多资源分配给reducer而不是映射器吗?集群以编程方式启动(根据here)-我可以看到我可以控制配置文件中的各种参数:我走在

hadoop - 在 hadoop/map reduce 中读取 avro 格式数据

我正在尝试读取保存在hdfs中的hadoop中的avro格式数据。但我见过的大多数例子都要求我们将模式解析到作业中。但是我无法理解该要求。我使用pig和avro,我从未传递过模式信息。所以,我想我可能遗漏了一些东西。基本上,如果我没有架构信息,那么在hadoopmapreduce中读取avro文件的好方法是什么?谢谢 最佳答案 你说得对,Avro对于提前知道类型非常严格。如果您不知道架构,我知道的唯一选择是将其作为GenericRecord读取。这是如何做到这一点的片段publicclassMyMapperextendsextend

java - MapReduce - reducer 在一行中发出输出

我有一个简单的MapReduce作业,它应该从文本文件中读取字典,然后它们逐行处理另一个巨大的文件并计算逆向文档矩阵。输出应该是这样的:word-id1docX:tfXdocY:tfYword-id2docX:tfXdocY:tfYetc...但是,reducer的输出仅在一个huuuge行中发出。我不明白为什么它应该为每个word-id(这是reducer的关键)发出一个新行。映射器生成正确的输出(一对word-id和doc-id:tf的值在不同的行上)。我在没有reducer的情况下进行了测试。reducer应该只是将对应于同一键的值附加到一行中的每个键。能否请您看一下我的代码(特

java - 在 Map Reduce 作业中使用多线程

我注意到addzone要求了解Map-Reduce和Java多线程-我看不出它们如何存在于同一个项目中。谁能给我举个例子,我们什么时候需要结合Map-Reduce和多线程? 最佳答案 如果您开发一个大型系统,则子系统需要应用不同的技术。 关于java-在MapReduce作业中使用多线程,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/31129876/

hadoop - 确定 Hadoop 中的 Reduce 数量

在Hadoop中,map的数量由输入拆分的数量决定。减少的数量呢?有没有一种方法可以直观的判断reduce?我正在Pig中进行map缩减。 最佳答案 理想的reducer应该是使它们最接近于:block大小的倍数任务时间在5到15分钟之间创建尽可能少的文件引用:http://wiki.apache.org/hadoop/HowManyMapsAndReduces 关于hadoop-确定Hadoop中的Reduce数量,我们在StackOverflow上找到一个类似的问题:

hadoop - 每个 mapper 中的 Hashmap 应该在单个 reducer 中使用

在我的一个类(class)中,我使用HashMap。我在我的映射器中调用该类(class)。所以现在每个mapper都有自己的HashMap。现在我可以将所有HashMap用于单个reducer吗?实际上,我的HashMap包含Key作为我的文件名,值是Set。因此每个HashMap都包含一个文件名和一个Set。现在我想使用所有包含相同文件名的HashMap并想合并所有值(集),然后将该HashMap写入我的Hdfs文件 最佳答案 是的,你可以做到。如果您的映射器以hashmap的形式提供输出,那么您可以使用Hadoop的MapWr

hadoop - 如何在具有多个 reducer 的 map reduce 中获得合并值

在map-reduce作业中,如果设置4个reducer来实现reducer作业。通过这样做,最终输出将生成4个部分文件。喜欢:part-r-00001part-r-00002part-r-00003part-r-00004在这种情况下如何获得合并值?说如果我正在计算最大数量?上述情况显然会生成4个不同的文件,它们返回4个不同的值。 最佳答案 一个简短的回答是在你的情况下使用一个reducer。但是当mapper的输出太多,单个reducer无法处理时,我建议你使用tworoundmapreducework。在第一轮中,您在每个re