Conceitos básicos da AWS Glue Data Catalog - AWS Glue

Conceitos básicos da AWS Glue Data Catalog

O AWS Glue Data Catalog é seu armazenamento persistente de metadados técnicos. É um serviço gerenciado que você pode usar para armazenar, anotar e compartilhar metadados na Nuvem AWS. Para ter mais informações, consulte AWS Glue Data Catalog.

O console do AWS Glue e algumas interfaces do usuário foram atualizadas recentemente.

Visão geral

É possível usar este tutorial para criar o primeiro Catálogo de dados AWS Glue, que usa um bucket do Amazon S3 como origem de dados.

Neste tutorial, você fará o seguinte usando o console do AWS Glue:

  1. Criar um banco de dados.

  2. Criar uma tabela

  3. Usar um bucket do Amazon S3 como fonte de dados

Após concluir essas etapas, você terá usado com êxito um bucket do Amazon S3 como fonte de dados para preencher o Catálogo de dado AWS Glue.

Etapa 1: criar um banco de dados

Para começar, faça login no AWS Management Console e abra o console do AWS Glue.

Para criar um banco de dados usando o console do AWS Glue:

  1. No console do AWS Glue, escolha Databases (Bancos de dados) em Data catalog (Catálogo de dados) no menu à esquerda.

  2. Selecione Add database (Adicionar banco de dados).

  3. Na página Criar um banco de dados, insira um nome para o banco de dados. Na seção Localização - opcional, defina a localização do URI para uso pelos clientes do catálogo de dados. Se não souber, você poderá continuar com a criação do banco de dados.

  4. (Opcional). Insira uma descrição para o banco de dados.

  5. Selecione Criar banco de dados.

Parabéns, você acabou de configurar seu primeiro banco de dados usando o console AWS Glue. Seu novo banco de dados aparecerá na lista de bancos de dados disponíveis. Você pode editar o banco de dados escolhendo o nome do banco de dados no painel Bancos de dados.

Próximas etapas

Outras formas de criar um banco de dados:

Você acabou de criar um banco de dados usando o console AWS Glue, mas existem outras maneiras de criar um banco de dados:

  • Você pode usar crawlers para criar um banco de dados e tabelas para você automaticamente. Para configurar um banco de dados usando crawlers, consulteTrabalhar com crawlers no console AWS Glue.

  • Você pode usar os modelos AWS CloudFormation. Consulte Criar recursos AWS Glue usando modelos AWS Glue Data Catalog.

  • Você também pode criar um banco de dados usando as AWS Glueoperações de API do banco de dados.

    Para criar um banco de dados usando a operação create, estruture a solicitação, incluindo os parâmetros DatabaseInput (obrigatórios).

    Por exemplo:

    Veja a seguir exemplos de como você pode usar a CLI, Boto3 ou DDL para definir uma tabela com base no mesmo arquivo flight_data.csv do bucket do S3 usado no tutorial.

    CLI
    aws glue create-database --database-input "{\"Name\":\"clidb\"}"
    Boto3
    glueClient = boto3.client('glue') response = glueClient.create_database( DatabaseInput={ 'Name': 'boto3db' } )

Para obter mais informações sobre os tipos de dados, estrutura e operações da API do banco de dados, consulte API do banco de dados.

Próximas etapas

Na próxima seção, você criará uma tabela e adicionará essa tabela ao banco de dados.

Você também pode explorar as configurações e permissões do seu Catálogo de dados. Consulte Trabalhar com configurações de catálogo de dados no console AWS Glue.

Etapa 2. Criar uma tabela

Nesta etapa, você cria uma tabela usando o console AWS Glue.

  1. No console AWS Glue, escolha Tables (Tabelas) no menu à esquerda.

  2. Escolha Add table (Adicionar tabela).

  3. Defina as propriedades da tabela inserindo um nome para a tabela em Table details (Detalhes da tabela).

  4. No seção Databases (Banco de dados), escolha no menu suspenso o banco de dados que criou na Etapa 1.

  5. Na seção Add a data store (Adicionar um datastore), a opção S3 será selecionada por padrão como o tipo de fonte.

  6. Em Data is located in (Dados localizados em), escolha Specified path in another account (Caminho especificado em outra conta).

  7. Copie e cole o caminho para o campo de entrada Include path (Incluir caminho):

    s3://crawler-public-us-west-2/flight/2016/csv/

  8. Na seção Data format (Formato de dados), para Classification (Classificação), escolha CSV e para Delimiter (Delimitador), escolha comma (,) (vírgula [,]). Escolha Próximo.

  9. Será solicitado que você defina um esquema. O esquema define a estrutura e o formato de um registro de dados. Selecione Add column (Adicionar coluna). (Para obter mais informações, consulte Schema registries (Registros de esquema).

  10. Especifique as propriedades da coluna:

    1. Insira um nome de coluna.

    2. Para o Column type (Tipo de coluna), 'string' já está selecionada por padrão.

    3. Para o Column number (Número da coluna), 'string' já está selecionada por padrão.

    4. Escolha Add.

  11. Você é solicitado a adicionar índices de partição. Isso é opcional. Para pular esta etapa, escolha, escolha Next (Próximo).

  12. Um resumo das propriedades da tabela é exibido. Se tudo estiver conforme o esperado, escolha Criar. Caso contrário, escolha Voltar e faça edições conforme for necessário.

Parabéns, você criou uma tabela manualmente e a associou a um banco de dados. Sua tabela recém-criada aparecerá no painel Tabelas. No painel, você pode modificar e gerenciar suas tabelas.

Para obter mais informações, consulte Working with Tables (Trabalhar com tabelas) no console AWS Glue.

Next steps (Próximas etapas)

Next steps (Próximas etapas)

Agora que o Catálogo de dados está preenchido, você pode começar a criar trabalhos no AWS Glue. Consulte Criar trabalhos de ETL visual com o AWS Glue Studio.

Além de usar o console, há outras maneiras de definir tabelas no Catálogo de dados, incluindo:

  • Criar e executar um crawler

  • Adicionar classificadores a um crawler no AWS Glue

  • Usar a API da tabelaAWS Glue

  • Usar o modelo AWS Glue Data Catalog

  • Migrar um metastore do Apache Hive

  • Usar o AWS CLI, Boto3 ou linguagem de definição de dados (DDL)

    Veja a seguir exemplos de como você pode usar a CLI, Boto3 ou DDL para definir uma tabela com base no mesmo arquivo flight_data.csv do bucket do S3 usado no tutorial.

    Consulte a documentação sobre como estruturar um comando AWS CLI. O exemplo de CLI contém a sintaxe JSON para o valor 'aws glue create-table --table-input'.

    CLI
    { "Name": "flights_data_cli", "StorageDescriptor": { "Columns": [ { "Name": "year", "Type": "bigint" }, { "Name": "quarter", "Type": "bigint" } ], "Location": "s3://crawler-public-us-west-2/flight/2016/csv", "InputFormat": "org.apache.hadoop.mapred.TextInputFormat", "OutputFormat": "org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat", "Compressed": false, "NumberOfBuckets": -1, "SerdeInfo": { "SerializationLibrary": "org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe", "Parameters": { "field.delim": ",", "serialization.format": "," } } }, "PartitionKeys": [ { "Name": "mon", "Type": "string" } ], "TableType": "EXTERNAL_TABLE", "Parameters": { "EXTERNAL": "TRUE", "classification": "csv", "columnsOrdered": "true", "compressionType": "none", "delimiter": ",", "skip.header.line.count": "1", "typeOfData": "file" } }
    Boto3
    import boto3 glue_client = boto3.client("glue") response = glue_client.create_table( DatabaseName='sampledb', TableInput={ 'Name': 'flights_data_manual', 'StorageDescriptor': { 'Columns': [{ 'Name': 'year', 'Type': 'bigint' }, { 'Name': 'quarter', 'Type': 'bigint' }], 'Location': 's3://crawler-public-us-west-2/flight/2016/csv', 'InputFormat': 'org.apache.hadoop.mapred.TextInputFormat', 'OutputFormat': 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat', 'Compressed': False, 'NumberOfBuckets': -1, 'SerdeInfo': { 'SerializationLibrary': 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe', 'Parameters': { 'field.delim': ',', 'serialization.format': ',' } }, }, 'PartitionKeys': [{ 'Name': 'mon', 'Type': 'string' }], 'TableType': 'EXTERNAL_TABLE', 'Parameters': { 'EXTERNAL': 'TRUE', 'classification': 'csv', 'columnsOrdered': 'true', 'compressionType': 'none', 'delimiter': ',', 'skip.header.line.count': '1', 'typeOfData': 'file' } } )
    DDL
    CREATE EXTERNAL TABLE `sampledb`.`flights_data` ( `year` bigint, `quarter` bigint) PARTITIONED BY ( `mon` string) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' LOCATION 's3://crawler-public-us-west-2/flight/2016/csv/' TBLPROPERTIES ( 'classification'='csv', 'columnsOrdered'='true', 'compressionType'='none', 'delimiter'=',', 'skip.header.line.count'='1', 'typeOfData'='file')