使用java检索hbase中的第n个限定符

Posted

技术标签:

【中文标题】使用java检索hbase中的第n个限定符【英文标题】:Retrieving nth qualifier in hbase using java 【发布时间】:2014-05-14 07:13:04 【问题描述】:

这个问题很不靠谱,但我需要它。

在list(collection)中,我们可以通过list.get(i)获取列表中的第n个元素;

类似地,在 hbase 中是否有任何方法,使用 java API,我可以在给定行 ID 和 ColumnFamily 名称的情况下获得第 n 个限定符。

注意:我在单个 columnFamily 的单行中有百万个限定符。

【问题讨论】:

你有限定词名称吗?? 不,会有很多限定词。如果我通过了一些限定符的索引号,我应该得到相应的限定符吗? 我们可以让它以某种方式工作。但是,你如何确保你传递的索引对应于所需的列?你应该在索引和列名之间有某种映射.对吧?? 是的,我知道列名(列族名),而且我知道相应的 rowid。我只需要 id 通过指定列名及其 rowid 来提取第 n 个限定符。我已经在上面提到过(...给定行 ID 和...) 当你已经有了列名和rowid时有什么问题?但是,列族名称与列名不同。如果您不介意,请您解释一下您的用例。一切就绪后,这似乎是不必要的操作。 【参考方案1】:

很抱歉没有回应。忙于重要的事情。现在试试这个:

package org.myorg.hbasedemo;

import java.io.IOException;
import java.util.Scanner;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.KeyValue;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.util.Bytes;

public class GetNthColunm 

    public static void main(String[] args) throws IOException 
        Configuration conf = HBaseConfiguration.create();
        HTable table = new HTable(conf, "TEST");
        Get g = new Get(Bytes.toBytes("4"));
        Result r = table.get(g);
        System.out.println("Enter column index :");
        Scanner reader = new Scanner(System.in);
        int index = reader.nextInt();
        System.out.println("index : " + index);
        int count = 0;      
        for (KeyValue kv : r.raw()) 
            if(++count!=index)
                continue;
            System.out.println("Qualifier : "
                    + Bytes.toString(kv.getQualifier()));
            System.out.println("Value : " + Bytes.toString(kv.getValue()));
               
        table.close();
        System.out.println("Done.");
    

如果我有更好的方法会告诉你。

【讨论】:

以上是关于使用java检索hbase中的第n个限定符的主要内容,如果未能解决你的问题,请参考以下文章

通过 hbase shell 命令显示列族和列限定符

HBase:使用限定符和值的过滤器扫描时如何获得完整的行?

Hbase 性能行键与列限定符

类型限定符volatile

HBase 过滤器匹配包含字符串的每一行

VIsual Studio 2013 C++ 引用限定符问题