

# Conceitos básicos do AWS Glue Data Catalog
<a name="start-data-catalog"></a>

 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 obter mais informações, consulte [AWS Glue Data Catalog](https://docs.aws.amazon.com/glue/latest/dg/components-overview.html#data-catalog-intro). 


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

## Visão geral
<a name="start-data-catalog-overview"></a>

 É 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. 

1.  Criar uma tabela 

1.  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
<a name="start-data-catalog-database"></a>

 Para começar, faça login no Console de gerenciamento da AWS e abra o [console do AWS Glue](https://console.aws.amazon.com/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. 

1.  Selecione **Adicionar banco de dados**. 

1.  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. 

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

1.  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, consulte[Trabalhar com crawlers no console AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/console-crawlers.html). 
+  Você pode usar os modelos CloudFormation. Consulte [Criar recursos AWS Glue usando modelos AWS Glue Data Catalog](https://docs.aws.amazon.com/glue/latest/dg/populate-with-cloudformation-templates.html). 
+  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\$1data.csv do bucket do S3 usado no tutorial.   

  ```
  aws glue create-database --database-input "{\"Name\":\"clidb\"}"                                              
  ```

  ```
  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](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-catalog-databases.html). 

 **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](https://docs.aws.amazon.com/glue/latest/dg/console-data-catalog-settings.html). 

## Etapa 2. Criar uma tabela
<a name="start-data-catalog-table"></a>

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

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

1.  Escolha **Add table (Adicionar tabela)**. 

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

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

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

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

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

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

1.  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**. 

1. 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](https://docs.aws.amazon.com/glue/latest/dg/schema-registry.html#schema-registry-schemas.html)).

1.  Especifique as propriedades da coluna: 

   1. Insira um nome de coluna. 

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

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

   1. Escolha **Adicionar**.

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

1.  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](https://docs.aws.amazon.com/glue/latest/dg/console-tables.html). 

## Next steps (Próximas etapas)
<a name="start-data-catalog-next-steps"></a>

 **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](https://docs.aws.amazon.com/glue/latest/dg/author-job-glue.html). 

 Além de usar o console, há outras maneiras de definir tabelas no Catálogo de dados, incluindo:
+  [Criar e executar um crawler](https://docs.aws.amazon.com/glue/latest/dg/add-crawler.html) 
+  [Adicionar classificadores a um crawler no AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/add-classifier.html) 
+  [Usar a API da tabelaAWS Glue](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-catalog-tables.html) 
+  [ Usar o modelo AWS Glue Data Catalog](https://docs.aws.amazon.com/glue/latest/dg/populate-with-cloudformation-templates.html) 
+  [ Migrar um metastore do Apache Hive](https://github.com/aws-samples/aws-glue-samples/tree/master/utilities/Hive_metastore_migration) 
+  [Usar o AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/glue/create-table.html), 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\$1data.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'.   

  ```
  {
          "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"
          }
      }
  ```

  ```
  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'
      }
      }
  )
  ```

  ```
  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')
  ```