Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用java检索hbase中的第n个限定符_Java_Hadoop_Mapreduce_Hbase_Bigdata - Fatal编程技术网

使用java检索hbase中的第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

这个问题很离谱,但我需要它

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

类似地,在hbase中,有任何使用JavaAPI的方法可以在给定行id和列族名称的情况下获得第n个限定符


注意:我在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时有什么问题?但是,列族名称与列名不同。如果你不介意的话,请给我解释一下你的用例好吗。当一切就绪时,这似乎是一个不必要的操作。