使用java检索hbase中的第n个限定符
这个问题很离谱,但我需要它 在list(collection)中,我们可以通过list.get(i)检索列表中的第n个元素 类似地,在hbase中,有任何使用JavaAPI的方法可以在给定行id和列族名称的情况下获得第n个限定符使用java检索hbase中的第n个限定符,java,hadoop,mapreduce,hbase,bigdata,Java,Hadoop,Mapreduce,Hbase,Bigdata,这个问题很离谱,但我需要它 在list(collection)中,我们可以通过list.get(i)检索列表中的第n个元素 类似地,在hbase中,有任何使用JavaAPI的方法可以在给定行id和列族名称的情况下获得第n个限定符 注意:我在single columnFamily的单行中有一百万个限定符。很抱歉没有响应。忙着做重要的事情。现在就试试这个: package org.myorg.hbasedemo; import java.io.IOException; import java.ut
注意:我在single columnFamily的单行中有一百万个限定符。很抱歉没有响应。忙着做重要的事情。现在就试试这个:
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.");
}
}
如果有更好的方法,我会通知您。您有限定符名称吗?没有,将有许多限定符。如果我传递一些限定符的索引号,我应该得到相应的限定符?我们可以让它以某种方式工作..但是,你如何确保你传递的索引对应于所需的列?你应该在索引和列名之间有某种映射。对??是的,我知道列名(列族名称)加上相应的rowid。通过指定列名及其rowid来提取第n个限定符所需的全部id。我已经在上面提到过(…给定行id和…)当您已经有了列名和行id时有什么问题?但是,列族名称与列名不同。如果你不介意的话,请给我解释一下你的用例好吗。当一切就绪时,这似乎是一个不必要的操作。