2017-12-11 5 views

答えて

0

私は今までのように定義済みのユーティリティについては気づいていません。次のコードを使用して、表内の列ファミリの列修飾子を取得できますか。

使用法:HbaseCqIdentifierは[tableNameの] [columnFamily]

import java.io.IOException; 
import java.util.Set; 

import org.apache.hadoop.hbase.HBaseConfiguration; 
import org.apache.hadoop.hbase.TableName; 
import org.apache.hadoop.hbase.client.Admin; 
import org.apache.hadoop.hbase.client.Connection; 
import org.apache.hadoop.hbase.client.ConnectionFactory; 
import org.apache.hadoop.hbase.client.ResultScanner; 
import org.apache.hadoop.hbase.client.Scan; 
import org.apache.hadoop.hbase.client.Table; 
import org.apache.hadoop.hbase.util.Bytes; 

public class HbaseCqIdentifier { 
    private static Connection conn; 
    private static Set<byte[]> columnQualifiers; 

    public static Admin getConnection() throws IOException { 
     if (conn == null) { 
      conn = ConnectionFactory.createConnection(HBaseConfiguration.create()); 
     } 
     return conn.getAdmin(); 
    } 

    public static void main(String args[]) throws IOException { 
     getConnection(); 
     scan(args[0], args[1]); 
     columnQualifiers.forEach((k) -> System.out.println("Column Qualifier : " + Bytes.toString(k))); 
    } 

    public static void scan(String tableName, String columnFamily) throws IOException { 
     System.out.println("Table Name : " + tableName); 
     Table table = conn.getTable(TableName.valueOf(tableName)); 
     Scan scan = new Scan(); 
     scan.addFamily(Bytes.toBytes(columnFamily)); 
     ResultScanner rs = table.getScanner(scan); 

     while(rs.iterator().hasNext()){ 
      rs.forEach((k)-> columnQualifiers = k.getFamilyMap(Bytes.toBytes(columnFamily)).keySet()); 
     } 
    } 
} 

注:クラスパスにHBaseの-site.xmlのと一緒のHadoopとHBaseのjarファイルを追加

関連する問題