这是Hadoop中的数据结构实现。我想使用map-reduce编程在Hadoop中实现索引。 第1部分=我想在表中使用索引号将每个单词存储在该文本文件中。 [能够完成] 第2部分=现在我想为这个新创建的表执行散列[无法完成] 第一部分我能够完成,但第二部分我面临困难 假设我有一个包含3行的文本文件: 你的工作怎么样? 你的家人好吗 嗨你好吗
我想使用索引存储此文本文件。我有map-reduce代码返回每个单词的索引值,这个索引值我能够存储在索引表(哈希表)中 包含每个单词的索引值的输出: 怎么0, 14怎么样, 是3, 是18岁, 工作12, 你的7,
现在要存储在哈希表中,对模块中的每个单词(索引值)应用散列(文件中不同元素的数量),然后说4.对于单词的每个索引值并应用散列函数(模块'%&# 39;)存储在哈希表中。如果相同位置发生碰撞,请转到下一个位置并存储。
0%4=0(store 'how' at hash index 0)
14%4=2(store 'how' at has index 2)
18%4=2(store 'is' at hash index 3 because of collision)
7%4=3 (store 'your' at index 4 because of collision)
答案 0 :(得分:1)
您可以创建Hashtable对象并放置键和值。
Hashtable hashtable = new Hashtable();
如何找到钥匙? 答。你有完全不同的单词数和单词的索引。 key = index%no of distinct words value = word
在哈希表中插入记录之前,检查该键是否发生冲突。 如何检查碰撞发生? 答。
boolean collision=hashtable.containsKey(key);
如果碰撞为真,则线性检查键+ 1,键+ 2,......当碰撞发生错误时,使用下面的行在哈希表中插入键和值。
hashtable.put(key,value);