Criar conjuntos de dados federados do AWS Glue

Neste documento, descrevemos como criar um conjunto de dados federado no BigQuery que está vinculado a um banco de dados existente no AWS Glue.

Um conjunto de dados federado é uma conexão entre o BigQuery e uma fonte de dados externa no nível do conjunto de dados. As tabelas em um conjunto de dados federado são preenchidas automaticamente com base nas tabelas na fonte de dados externa correspondente. Você pode consultar essas tabelas diretamente no BigQuery, mas não é possível fazer modificações, adições ou exclusões. No entanto, as atualizações feitas na fonte de dados externa são refletidas automaticamente no BigQuery.

Antes de começar

Verifique se você tem uma conexão para acessar os dados do AWS Glue.

  • Para criar ou modificar uma conexão, siga as instruções em Conectar-se ao Amazon S3. Ao criar essa conexão, inclua a seguinte declaração de política para o AWS Glue na sua política do Identity and Access Management do AWS para BigQuery. Inclua essa instrução, além das outras permissões, no bucket do Amazon S3 em que os dados nas tabelas do AWS Glue estão armazenados.

    {
     "Effect": "Allow",
     "Action": [
       "glue:GetDatabase",
       "glue:GetTable",
       "glue:GetTables",
       "glue:GetPartitions"
     ],
     "Resource": [
       "arn:aws:glue:REGION:ACCOUNT_ID:catalog",
       "arn:aws:glue:REGION:ACCOUNT_ID:database/DATABASE_NAME",
       "arn:aws:glue:REGION:ACCOUNT_ID:table/DATABASE_NAME/*"
     ]
    }

    Substitua:

    • REGION: a região do AWS, por exemplo, us-east-1.
    • ACCOUNT_ID:: o ID da conta do AWS com 12 dígitos
    • DATABASE_NAME: o nome do banco de dados do AWS Glue

Permissões necessárias

Para receber as permissões necessárias a fim de criar um conjunto de dados federado, peça ao administrador para conceder a você o papel do IAM de Administrador do BigQuery (roles/bigquery.admin). Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Esse papel predefinido contém as permissões necessárias para criar um conjunto de dados federado. Para conferir as permissões exatas necessárias, expanda a seção Permissões necessárias:

Permissões necessárias

As permissões a seguir são necessárias para criar um conjunto de dados federado:

  • bigquery.datasets.create
  • bigquery.connections.use
  • bigquery.connections.delegate

Essas permissões também podem ser concedidas com funções personalizadas ou outros papéis predefinidos.

Para mais informações sobre os papéis e as permissões do IAM no BigQuery, consulte Introdução ao IAM.

Criar um conjunto de dados federado

Para criar um conjunto de dados federado, faça o seguinte:

Console

  1. Abra a página do BigQuery no console do Google Cloud.

    Acesse a página do BigQuery

  2. No painel Explorador, selecione o projeto em que você quer criar o conjunto de dados.

  3. Expanda a opção Ações e clique em Criar conjunto de dados.

  4. Na página Criar conjunto de dados, faça o seguinte:

    • Em Código do conjunto de dados, digite um nome exclusivo.
    • Em Tipo de local, escolha um local da AWS para o conjunto de dados, como aws-us-east-1. Depois que você cria um conjunto de dados, o local não pode ser alterado.
    • Em Conjunto de dados externo, faça o seguinte:

      • Marque a caixa ao lado de Vincular a um conjunto de dados externo.
      • Em Tipo de conjunto de dados externo, selecione AWS Glue.
      • Em Origem externa, insira aws-glue:// seguido pelo nome de recurso da Amazon (ARN) do banco de dados do AWS Glue. Por exemplo: aws-glue://arn:aws:glue:us-east-1:123456789:database/test_database.
      • Em ID da conexão, selecione a conexão da AWS.
    • Não altere as outras configurações.

  5. Clique em Criar conjunto de dados.

SQL

Use a instrução de linguagem de definição de dados (DDL) CREATE EXTERNAL SCHEMA:

  1. No Console do Google Cloud, acesse a página BigQuery.

    Ir para o BigQuery

  2. No editor de consultas, digite a seguinte instrução:

    CREATE EXTERNAL SCHEMA DATASET_NAME
    WITH CONNECTION PROJECT_ID.CONNECTION_LOCATION.CONNECTION_NAME
      OPTIONS (
        external_source = 'AWS_GLUE_SOURCE',
        location = 'LOCATION');

    Substitua:

    • DATASET_NAME: o nome do novo conjunto de dados no BigQuery.
    • PROJECT_ID: o ID do projeto.
    • CONNECTION_LOCATION: o local da conexão do AWS, por exemplo, aws-us-east-1.
    • CONNECTION_NAME: o nome da conexão do AWS.
    • AWS_GLUE_SOURCE: o nome de recurso da Amazon (ARN, na sigla em inglês) do banco de dados do AWS Glue com um prefixo que identifica a origem. Por exemplo, aws-glue://arn:aws:glue:us-east-1:123456789:database/test_database.
    • LOCATION: o local do novo conjunto de dados no BigQuery. Por exemplo, aws-us-east-1. Depois de criar um conjunto de dados, não será possível alterar o local dele.

  3. Clique em Executar.

Para mais informações sobre como executar consultas, acesse Executar uma consulta interativa.

bq

Em um ambiente de linha de comando, crie um conjunto de dados usando o comando bq mk:

bq --location=LOCATION mk --dataset \
    --external_source aws-glue://AWS_GLUE_SOURCE \
    --connection_id PROJECT_ID.CONNECTION_LOCATION.CONNECTION_NAME \
    DATASET_NAME

Substitua:

  • LOCATION: o local do novo conjunto de dados no BigQuery. Por exemplo, aws-us-east-1. Depois de criar um conjunto de dados, não será possível alterar o local dele. É possível definir um valor de local padrão usando o arquivo .bigqueryrc.
  • AWS_GLUE_SOURCE: o nome de recurso da Amazon (ARN) do banco de dados do AWS Glue. Por exemplo, arn:aws:glue:us-east-1:123456789:database/test_database.
  • PROJECT_ID: o ID do projeto do BigQuery.
  • CONNECTION_LOCATION: o local da conexão do AWS, por exemplo, aws-us-east-1.
  • CONNECTION_NAME: o nome da conexão do AWS.
  • DATASET_NAME: o nome do novo conjunto de dados no BigQuery. Para criar um conjunto de dados em um projeto diferente do projeto padrão, adicione a ID do projeto ao nome do conjunto de dados no seguinte formato: PROJECT_ID:DATASET_NAME.

Terraform

Use o