使用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个限定符的主要内容,如果未能解决你的问题,请参考以下文章