问题标签 [partitioner]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2770 浏览

hadoop - Hadoop 操作顺序

根据在雅虎的hadoop教程上找到的附图,操作的顺序是map > combine > partition,应该遵循reduce

这是我的 map 操作发出的示例键

假设有 100 个相同类型的键,这应该组合为

然后我想按第一个管道(|) http://hadoop.apache.org/common/docs/r0.20.2/streaming.html#A+Useful+Partitioner+Class+%28secondary之前的值对键进行分区+sort%2C+the+-partitioner+org.apache.hadoop.mapred.lib.KeyFieldBasedPartitioner+option%29

所以这是我的流媒体命令

这是我得到的错误

我看起来partitionercombiner之前运行。有什么想法吗?

0 投票
3 回答
867 浏览

hadoop - Partitioner 类中的参数 numPartitions

大师!

任何人都可以回答:Partitioner 类中的参数 numPartitions 在哪里定义(这个参数的值)?

0 投票
1 回答
1720 浏览

hadoop - Hadoop 向所有 reducer 发送记录

如何将特定记录发送给我的所有减速器?

我知道 Partitioner 类及其作用,但我没有看到任何简单的方法可以确保记录发送到所有减速器。

基本上,Partitioner 有这个方法:

我的第一个想法是让 Partitioner 和 Mapper 协作如下:Mapper 不断输出记录的次数等于 reduce 任务的数量,并且 Partitioner 以这种方式返回所有整数(从 0 到 numPartitions-1)确保记录到达所有分区。

有没有其他更聪明的方法来解决这个问题?例如,我为需要发送到所有分区的记录返回 -1,并且框架在看到返回的 -1 时为我执行此操作。

0 投票
2 回答
522 浏览

java - 在 Hadoop Map-Reduce 中,是否有任何类在排序之后和分区之前看到整个键列表?

我正在使用 Hadoop 分析非常不均匀的数据分布。有些键有数千个值,但大多数只有一个。例如,与 IP 地址相关联的网络流量将有许多数据包与一些健谈的 IP 相关联,而只有少数与大多数 IP 相关联。另一种说法是基尼指数非常高。

为了有效地处理这个问题,每个reducer 应该获得一些高音量键或大量低音量键,以便获得大致均匀的负载。如果我正在编写分区过程,我知道该怎么做:我将获取keys映射器生成的(包括所有重复键)的排序列表以及减速器的数量,N并将拆分放在

Reduceri将获得k诸如split[i] <= k < split[i+1]for0 <= i < N-1split[i] <= kfor 的键i == N-1

我愿意用 Java 编写自己的分区器,但Partitioner<KEY,VALUE>类似乎一次只能访问一个键值记录,而不是整个列表。我知道 Hadoop 对映射器生成的记录进行排序,所以这个列表必须存在于某个地方。它可能分布在几个分区器节点中,在这种情况下,我会在其中一个子列表上执行拆分过程,并以某种方式将结果传达给所有其他分区器节点。(假设选择的分区节点看到一个随机子集,结果仍然是近似负载平衡的。) 有谁知道排序的键列表存储在哪里,以及如何访问它?

我不想编写两个 map-reduce 作业,一个是查找拆分,另一个是实际使用它们,因为这看起来很浪费。(映射器必须做两次相同的工作。)这似乎是一个普遍的问题:不均匀分布很常见。

0 投票
1 回答
2372 浏览

hadoop - 输出收集器如何工作?

我试图分析默认的 map reduce 作业,它没有定义 mapper 或 reducer。即一个使用 IdentityMapper 和 IdentityReducer 为了让自己清楚我刚刚写了我的身份缩减器

我的输入文件是:

我的观点是,由于聚合是由程序员在 reducer 的 while 循环中完成的,然后写入 outputcollector。我的印象是传递给 outputcollector 的减速器的键总是唯一的,因为如果我不聚合,最后一个键的值会覆盖前一个值。显然不是这样。有人可以给我一个更好的输出收集器,它是如何工作的以及它如何处理所有的键。我在 hadoop src 代码中看到了许多 outputcollector 的实现。我可以编写自己的输出收集器来完成我所期望的吗?

0 投票
1 回答
456 浏览

hadoop - MapReduce 中的地图工作者如何分区文件与中间值?

我正在尝试理解 MapReduce 模型,我需要建议,因为我不确定如何使用 map 函数的中间结果对文件进行排序和分区。我从Jeffrey Dean 和 Sanjay Ghemawat 的 MapReduce 论文以及 Hadoop: The Definitive Guide 中获得了关于 MapReduce 的最多知识。

具有map函数中间结果的文件是小型排序和分区文件的组合。这些小文件被划分为对应于reduce worker的partition。然后将小文件合并为一个文件。我需要知道小文件的分区是如何完成的。首先,我认为每个分区都有一定范围的键。

例如:如果我们将键作为整数在 <1;100> 范围内,并且文件分为三个分区,那么第一个分区可以包含键在 <1,33> 范围内的值,第二个分区可以包含键在 <1,33> 范围内的值34;66> 和第三分区 <67;100>。合并文件中也有相同的分区。

但我不确定。每个分区都被发送到相应的reduce worker。在我们的示例中,如果我们有两个 reduce 工作人员,则可以将具有前两个键范围(<1,33> 和 <34;66>)的分区发送给第一个工作人员,将最后一个分区发送给第三个工作人员。但是,如果我错了并且文件以另一种方式划分(我的意思是分区没有自己的可能键范围),那么每个 reduce 工作人员都可以得到相同键的结果。所以我需要以某种方式合并这些减少工作者的结果,对吗?我可以将这些结果发送到主节点并在那里合并吗?

简而言之:我需要解释 map 阶段的文件是如何划分的(如果我的描述是错误的),并解释我如何以及在哪里可以处理 reduce 工作人员的结果。

我希望我描述了我的问题足以理解。当然,我可以解释更多。

非常感谢你的回答。

0 投票
1 回答
1610 浏览

hadoop - Hadoop 自定义分区问题

根据自定义分区程序的“getPartition”方法的输出,我遇到了一个自定义中间键没有出现在我期望的分区中的问题。我可以在我的映射器日志文件中看到分区器生成预期的分区号,但是有时具有公共分区号的键不会在同一个减速器中结束。

具有公共“getPartition”输出的键如何在不同的减速器中结束?

我在映射器日志文件中注意到,在对自定义中间键“hashCode”和“compareTo”方法进行了多次调用之后,所有“getPartition”调用都被调用了。映射器只是在分区排序中进行还是可能是问题的一部分?

我附上了自定义中间键和分区器的代码。注意:我确切知道 1/2 的键将“useBothGUIDFlag”设置为 true,而 1/2 的键将此设置为 false(这就是为什么我将这些键分区为分区空间的一半)。我也知道键似乎没有跨入分区的另一半​​(即,“useBothGUIDFlag”键不会出现在“!useBothGUIDFlag”分区中,反之亦然),而是它们在它们的一半内混合分区。

0 投票
2 回答
398 浏览

hadoop - 自定义分区错误

我正在编写自己的自定义 Partitioner(Old Api) 下面是我扩展 Partitioner 类的代码:

设置 JobConf:

WordPair 类包含:
私有文本字;
私人文本邻居;

问题:
1. 我收到错误:“实际参数类 (WordPairPartitioner) 无法转换为类 (?extends Partitioner)
。2. 这是编写自定义分区器的正确方法,还是我还需要覆盖其他一些功能?

0 投票
2 回答
904 浏览

hadoop - Hadoop Partitioner 中的自定义计数器

我想在自定义分区器(甚至是默认的 HashPartitioner)中捕获一些关于键及其值的信息。

我可以通过访问“上下文”变量在映射器和减速器中使用自定义计数器。但是,在 Partitioner 内部,无法访问“context”变量。

有没有办法:-1- 从 Partitioner 访问“context”变量?或-2-如何向分区器添加计数器?

谢谢你。

0 投票
1 回答
677 浏览

cassandra - 如何允许不同的键空间在 Cassandra 中使用不同的分区器?

我是 Cassandra 的新手,对它的分区器有一个基本的问题。

根据Cassandra 文档,集群的分区器应该在 cassandra.yaml 文件中设置。我的问题是:这是否意味着 Cassandra 集群中的所有键空间都必须使用相同的分区器?如果不是,如何允许不同的键空间使用不同的分区器?