0

在我的 hadoop 映射器任务中,我通过扫描 hbase 表创建了一个 [key,value] = [sortKey,rowID] 在 reduce 任务中,当我执行 Result=Htable.get(rowID) 时,一些随机返回 null 以表示不同行 ID。但是在 hbase shell 中查询时,能够获取相同的 rowId。对于 1000 的输入 hbase 表行数(mapper 能够获取所有这些记录),大约 100 条记录将 htable.get(rowID) 返回为 null(在 reducer 中),但所有这 100 条记录实际上都在表中可用。

知道为什么 htable 上的“get”会随机返回 null 吗?任何缓存或内存调整都可以解决这个问题?

我正在使用 hadoop-1.0.3、hbase-0.92.1

4

1 回答 1

0

我使用 hashmap 来存储那些 Text rowids,因为它指的是循环内的相同位置。由于我在循环中进行了一些更新/删除,因此找不到一些行 ID。将 hashmap 更改为 string,或者创建一个新的 Text 对象,然后将其添加到 hashmap 解决了这个问题。

于 2013-04-17T18:30:28.830 回答