我尝试使用
检查表格格式的详细信息 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')
从INPUTFORMAT
和OUTPUTFORMAT
,我可以看出这是文字格式。
同样,我可以使用以下方式获取这些细节:
describe extended test
我猜这些都是效率低下的方式。如何在Java代码中使用Hive JDBC以更好的方式实现此目的。
答案 0 :(得分:1)
这可以使用Hcatalog api实现。在连接到hive Metastore时,您可以根据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());
}