HBase扫描是否返回已排序的列?

时间:2011-06-28 19:09:38

标签: hadoop hbase

我正在处理HBase map reduce作业,需要了解单个列系列中的列是否按名称(键)返回。如果是这样,我不需要在随机排序阶段进行。

由于

2 个答案:

答案 0 :(得分:1)

我有一个非常相似的数据模型。但是,插入后,我为Put对象设置了自己的时间戳值。但是,我这样做是为了获取当前时间的“种子”并为我在批处理中保留的每个事件添加一个递增计数器。

当我从扫描中取出结果时,我写了一个比较器:

public class KVTimestampComparator implements Comparator<KeyValue> {

    @Override
    public int compare(KeyValue kv1, KeyValue kv2) {
        Long kv1Timestamp = kv1.getTimestamp();
        Long kv2Timestamp = kv2.getTimestamp();

        return kv1Timestamp.compareTo(kv2Timestamp);
    }
}

然后对原始行进行排序:

List<KeyValue> row = Arrays.asList(result.raw());
Collections.sort(row, new KVTimestampComparator());

从回答这个问题的人那里得到了这个想法:Sorted results from hbase scanner

答案 1 :(得分:-1)

不,列没有排序 它们在内部存储为长字节数组中的键值对。但是,你应该澄清你的实际需要的问题。