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ígitosDATABASE_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
Abra a página do BigQuery no console do Google Cloud.
No painel Explorador, selecione o projeto em que você quer criar o conjunto de dados.
Expanda a opção
Ações e clique em Criar conjunto de dados.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.
Clique em Criar conjunto de dados.
SQL
Use a
instrução de linguagem de definição de dados (DDL) CREATE EXTERNAL SCHEMA
:
No Console do Google Cloud, acesse a página BigQuery.
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.
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