Listando tabelas via Glue SDK e Java

Utilizar a SDK da AWS é sempre uma boa opção caso precise explorar algum recurso mais a fundo em busca de uma solução. Neste post, iremos explorar um pouco do AWS Glue utilizando SDK. O Glue é uma ferramenta de ETL da AWS, que proporciona um repositório central de metadados, este chamado de Glue Catalog. Resumindo, o Glue Catalog mantém toda a estrutura de bancos e tabelas e seus schemas em um único lugar. A ideia deste post será listar todas as tabelas de um determinado banco de dados existente no Glue Catalog de forma programática utilizando a SDK. Dependências Maven <dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-glue</artifactId>
<version>1.12.13</version>
</dependency> Neste exemplo, estamos utilizando a versão do Java 8 para explorar melhor o uso de Streams na interação. import com.amazonaws.regions.Regions;
import com.amazonaws.services.glue.AWSGlue;
import com.amazonaws.services.glue.AWSGlueClientBuilder;
import com.amazonaws.services.glue.model.GetTablesRequest;
import com.amazonaws.services.glue.model.GetTablesResult;

public class GlueService {

public static void main(String[] args) {

AWSGlue awsGlue = AWSGlueClientBuilder.standard()
.withRegion(Regions.US_EAST_1)
.build();

GetTablesResult getTablesResult;
GetTablesRequest getTableRequest = new GetTablesRequest();
getTableRequest.setDatabaseName("<database>");


do {

getTablesResult = awsGlue.getTables(getTableRequest);

getTablesResult.getTableList()
.stream()
.forEach(
table ->
System.out.println(table.getName())
);

String token = getTablesResult.getNextToken();
getTableRequest.setNextToken(token);

} while (getTablesResult.getNextToken() != null);
}
} Passo a passo O objeto awsGlue é o responsável pelo acesso ao recurso através das credencias que devem ser configuradas. Neste post não vamos entrar neste detalhe. O objeto getTablesRequest é o responsável por setar os parâmetros de requisição, neste caso, estamos setando o database. O objeto getTablesResult é o responsável por listar as tabelas com base nos parâmetros setados pelo objeto getTablesRequest e também controlar o fluxo do resultado. Perceba que além de retornar as tabelas através do método getTablesResult.getTableList(), este mesmo objeto retorna um token que será explicado melhor no próximo item. O token é representado pelo método getTablesResult.getNextToken(), a ideia do token é controlar o fluxo de resultados, pois todos os resultados são paginados e caso exista token para cada resultado, significa que ainda existem dados a serem retornados. No código, utilizamos uma estrutura de repetição com base na validação da existência do token, ou seja, se ainda existe token, este será setado no objeto getTableRequest através do código getTableRequest.setNextToken(token), para retornar mais resultados. É isso, curtiu? Até mais!

Listando tabelas via Glue SDK e Java