@Override
public Iterable<SourceTableDefinition> getDatasets(String user, DatasetRetrievalOptions retrievalOptions) {
final HiveClient client = getClient(user);
final ImmutableList.Builder<SourceTableDefinition> accessors = ImmutableList.builder();
try {
for(String dbName : client.getDatabases(retrievalOptions.ignoreAuthzErrors())) {
try {
for(String table : client.getTableNames(dbName, retrievalOptions.ignoreAuthzErrors())) {
DatasetBuilder builder = DatasetBuilder.getDatasetBuilder(
client,
getStorageUser(user),
new NamespaceKey(ImmutableList.of(name, dbName, table)),
true,
retrievalOptions.ignoreAuthzErrors(),
getStatsParams(),
hiveConf,
null);
if(builder != null){
accessors.add(builder);
}
}
} catch(TException e){
logger.warn("User {} is unable to retrieve table names for {}.{}.", user, name, dbName, e);
}
}
} catch(TException e){
logger.warn("User {} is unable to retrieve database names for Hive source named {}.", user, name, e);
}
return accessors.build();
}