in src/source-hive/src/main/java/org/apache/kylin/source/hive/BeelineHiveClient.java [157:219]
private void extractHiveTableMeta(ResultSet resultSet, HiveTableMetaBuilder builder) throws SQLException {
while (resultSet.next()) {
List<HiveTableMeta.HiveTableColumnMeta> partitionColumns = Lists.newArrayList();
if ("# Partition Information".equals(resultSet.getString(1).trim())) {
resultSet.next();
Preconditions.checkArgument("# col_name".equals(resultSet.getString(1).trim()));
resultSet.next();
Preconditions.checkArgument("".equals(resultSet.getString(1).trim()));
while (resultSet.next()) {
if ("".equals(resultSet.getString(1).trim())) {
break;
}
partitionColumns.add(new HiveTableMeta.HiveTableColumnMeta(resultSet.getString(1).trim(),
resultSet.getString(2).trim(), resultSet.getString(3).trim()));
}
builder.setPartitionColumns(partitionColumns);
}
if ("Owner:".equals(resultSet.getString(1).trim())) {
builder.setOwner(resultSet.getString(2).trim());
}
if ("LastAccessTime:".equals(resultSet.getString(1).trim())) {
try {
int i = Integer.parseInt(resultSet.getString(2).trim());
builder.setLastAccessTime(i);
} catch (NumberFormatException e) {
builder.setLastAccessTime(0);
}
}
if ("Location:".equals(resultSet.getString(1).trim())) {
builder.setSdLocation(resultSet.getString(2).trim());
}
if ("Table Type:".equals(resultSet.getString(1).trim())) {
builder.setTableType(resultSet.getString(2).trim());
}
if ("Table Parameters:".equals(resultSet.getString(1).trim())) {
while (resultSet.next()) {
if (resultSet.getString(2) == null) {
break;
}
if ("storage_handler".equals(resultSet.getString(2).trim())) {
builder.setIsNative(false);//default is true
}
if ("totalSize".equals(resultSet.getString(2).trim())) {
builder.setFileSize(Long.parseLong(resultSet.getString(3).trim()));//default is false
}
if ("numFiles".equals(resultSet.getString(2).trim())) {
builder.setFileNum(Long.parseLong(resultSet.getString(3).trim()));
}
if ("skip.header.line.count".equals(resultSet.getString(2).trim())) {
builder.setSkipHeaderLineCount(resultSet.getString(3).trim());
}
}
}
if ("InputFormat:".equals(resultSet.getString(1).trim())) {
builder.setSdInputFormat(resultSet.getString(2).trim());
}
if ("OutputFormat:".equals(resultSet.getString(1).trim())) {
builder.setSdOutputFormat(resultSet.getString(2).trim());
}
}
}