0
HBASEには、実行可能な列修飾子が数えられる(つまり10未満)行があります。 HBASEテーブルの行全体をスキャンするのは難しいです。 hbaseシェルまたは印刷に使用できるユーティリティを使用して列ファミリの列修飾子を印刷する方法はありますか?hbaseシェルコマンドを使用して列のファミリと列の修飾子を表示する
HBASEには、実行可能な列修飾子が数えられる(つまり10未満)行があります。 HBASEテーブルの行全体をスキャンするのは難しいです。 hbaseシェルまたは印刷に使用できるユーティリティを使用して列ファミリの列修飾子を印刷する方法はありますか?hbaseシェルコマンドを使用して列のファミリと列の修飾子を表示する
私は今までのように定義済みのユーティリティについては気づいていません。次のコードを使用して、表内の列ファミリの列修飾子を取得できますか。
使用法: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ファイルを追加