def append(self, key, value): self._checkKey(key) pos = self._data.getLength() if self._size >= self._last_index_nkeys + self.INDEX_INTERVAL and pos > self._last_index_pos: self._index.append(key, LongWritable(pos)) self._last_index_pos = pos self._last_index_nkeys = self._size self._data.append(key, value) self._size += 1
def _readIndex(self): if self._keys: return key_class = self._index.getKeyClass() skip = self.INDEX_SKIP position = LongWritable() last_position = None while True: key = key_class() if not self._index.next(key, position): break if skip > 0: skip -= 1 continue skip = self.INDEX_SKIP if position.get() == last_position: continue self._positions.append(position.get()) self._keys.append(key)
def __init__(self, path): super(Reader, self).__init__(path) self._key = LongWritable(0)
def append(self, value): super(Writer, self).append(LongWritable(self._count), value) self._count += 1