java - 具有 "customized"键的 MapReduce

标签 java hadoop mapreduce equals gridgain

我有以下问题:我有很多键值对形式的数据。关键是一些 id 和值 - 一些文本。我的目标是将这些对象分组到文本片段以某种方式“相似”的集群中。所以它看起来像是 MapReduce 的任务,如果将我的文本片段作为键,并将 id 作为值。但是这样的键不是 MapReduce 使用的传统方式,并且由于我并不真正了解 MapReduces 框架的内部实现,所以我不确定这种方式是否有效。所以我的详细想法是: 1. 在 Java 中使用一些 MapReduce(Hadoop、GridGain) 2.为我的文本片段创建特殊类(比如TextKey) 3.覆盖类的equals(),在这里打包文本比较逻辑(比如levenstein距离比较,或其他) 4. 覆盖 compareTo() 以允许 MapReduce 按键排序(比如字典顺序) 5.可能重写hashCode() 6. 将我的数据映射到键值对:keys -> text pieces, packed in TextKey class, values -> ids 7. 简单地通过收集每个“相等”(实际上相似)键的id来减少

MapReduce 可以那样工作吗?

最佳答案

在 GridGain 中,这可以通过将文本键存储在分区数据网格中轻松解决。 GridGain Data Grid 会自动根据键在集群中对您的数据集进行分区,因此只要您有类似的文本片段正确实现标准的 java hashCode() 和 equals(),就应该没问题。

您还可以在 GridGain 中发送基于亲和性的 MapReduce 任务,以确保您的作业最终与数据位于同一节点上,以避免在您需要对数据进行一些计算时进行冗余数据移动。这可以通过执行 GridProjection.affinityRun(...) 方法来实现。

关于java - 具有 "customized"键的 MapReduce,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11807134/

相关文章:

hadoop - mapreduce 中的 InputSplits

java - 在Eclipse中运行Hadoop作业时,使用System.Out.Println在控制台上没有O/P

java - 使用在不同的基于 java 的 Spring 配置文件中定义的原型(prototype) beans

java - Android ActionBar 不显示在代码中设置的标题

java - 找不到 jps 命令。将 JDK 的 jps 二进制文件放在命令路径上

Hive/SparkSQL 的 Hibernate 方言?

Python hadoop 流式传输 : Setting a job name

java - 长按 ListView 项目时删除 ListView 项目

java - 使用JAXB_FRAGMENT属性时,是否需要输出XML Declaration?

java - Hive jdbc - 无法从我自己的表中选择