2016-04-18 8 views
0

は、私は、コマンドJavaコードでハイブテーブル形式を取得する方法は?

show create table test

出力を使用して、テーブルのフォーマットの詳細を確認してみました:

CREATE TABLE `test`(
    `c1` boolean, 
    `c2` int, 
    `c3` varchar(30), 
    `c4` char(20)) 
ROW FORMAT SERDE 
    'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe' 
STORED AS INPUTFORMAT 
    'org.apache.hadoop.mapred.TextInputFormat' 
OUTPUTFORMAT 
    'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' 
LOCATION 
    'hdfs://hostname:8020/apps/hive/warehouse/test' 
TBLPROPERTIES (
    'COLUMN_STATS_ACCURATE'='true', 
    'numFiles'='3', 
    'numRows'='3', 
    'rawDataSize'='88', 
    'totalSize'='91', 
    'transient_lastDdlTime'='1458116522') 

INPUTFORMATOUTPUTFORMATから、私はこれはテキスト形式で伝えることができます。

同様に、私が使用して細部のこれらの種類を取得することができます:これらは私が推測する非効率的な方法があり

describe extended test

。 JavaコードでHive JDBCを使用してより良い方法でこれを達成する方法。

答えて

1

これは、Hcatalog apiを使用して実現できます。ハイブメタストアに接続すると、schemaNameとtableNameに基づいてHCatTableを取得できます。このHCatTableでは、inputFileFormatとOutputFileFormatを使用して同じものを取得できます。

あなたがJavaから来ている場合は、以下のスニペットを参照してください。

String schema = "blending"; 
HCatClient client = HCatalogClient.getClient(uri); 
List<String> tables = client.listTableNamesByPattern(schema, "*"); 
for(String table : tables) { 
    HCatTable hTable = client.getTable(schema, table); 
    System.out.println("Table name is :" +hTable.getTableName()); 
    System.out.println("Input file format is:"+hTable.getInputFileFormat()); 
    System.out.println("Output file format is:"+hTable.getOutputFileFormat()); 
} 
関連する問題