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, consulte Conectar-se ao Amazon S3 e inclua a seguinte declaração de política adicional para o AWS Glue na política do Identity and Access Management do AWS para o BigQuery:
{ "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 para criar um conjunto de dados federado,
peça ao administrador para conceder a você o papel do IAM
Administrador do BigQuery (roles/bigquery.admin
).
Para mais informações sobre como conceder papéis, consulte Gerenciar acesso.
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 papéis personalizados 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:
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
.
API
Chame a
função datasets.insert
método
com umrecurso do conjunto de dados definido
e o externalDatasetReference
campo
para o banco de dados do AWS Glue.
Listar tabelas em um conjunto de dados federado
Se quiser listar as tabelas disponíveis para consulta no conjunto de dados federado, confira Como listar conjuntos de dados.
Receber informações de tabelas
Para informações sobre as tabelas no conjunto de dados federado, como detalhes de esquema, consulte Receber informações da tabela.
Controlar o acesso a tabelas
Para gerenciar o acesso às tabelas no conjunto de dados federado, consulte Controlar o acesso a recursos com o IAM.
Consultar dados do AWS Glue
Consultar tabelas em conjuntos de dados federados é igual a consultar tabelas em qualquer outro conjunto de dados do BigQuery.
É possível consultar tabelas do AWS Glue nos seguintes formatos:
- CSV (compactado e descompactado)
- JSON (compactado e descompactado)
- Parquet
- ORC
- Avro
- Iceberg
Detalhes do mapeamento de tabelas
Todas as tabelas que você concede acesso no banco de dados do AWS Glue aparecem como uma tabela equivalente no conjunto de dados do BigQuery.
Formato
O formato de cada tabela do BigQuery é determinado pelos seguintes campos da respectiva tabela do AWS Glue:
InputFormat
(Table.StorageDescriptor.InputFormat
)OutputFormat
(Table.StorageDescriptor.OutputFormat
)SerializationLib
(Table.StorageDescriptor.SerdeInfo.SerializationLibrary
)
A única exceção são as tabelas Iceberg, que usam o campo TableType
(Table.Parameters["table_type"]
).
Por exemplo, uma tabela do AWS Glue com os campos a seguir é mapeada para uma tabela ORC no BigQuery:
InputFormat
="org.apache.hadoop.hive.ql.io.orc.OrcInputFormat"
OutputFormat
="org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat"
SerializationLib
="org.apache.hadoop.hive.ql.io.orc.OrcSerde"
Local
O local de cada tabela do BigQuery é determinado pelos seguintes fatores:
- Tabelas Iceberg: o campo
Table.Parameters["metadata_location"]
na tabela do AWS Glue - Tabelas não particionadas não Iceberg: o campo
Table.StorageDescriptor.Location
na tabela do AWS Glue - Tabelas particionadas não Iceberg: API AWS Glue GetSections
Outras propriedades
Além disso, algumas propriedades da tabela do AWS Glue são mapeadas automaticamente para opções específicas de formato no BigQuery:
Formato | SerializationLib | Valor da tabela do AWS Glue | Opção do BigQuery |
---|---|---|---|
CSV | LazySimpleSerDe | Table.StorageDescriptor.SerdeInfo.Parameters["field.delim"] | CsvOptions.fieldDelimiter |
CSV | LazySimpleSerDe | Table.StorageDescriptor.Parameters["serialization.encoding"] | CsvOptions.encoding |
CSV | LazySimpleSerDe | Table.StorageDescriptor.Parameters["skip.header.line.count"] | CsvOptions.skipLeadingRows |
CSV | OpenCsvSerDe | Table.StorageDescriptor.SerdeInfo.Parameters["separatorChar"] | CsvOptions.fieldDelimiter |
CSV | OpenCsvSerDe | Table.StorageDescriptor.SerdeInfo.Parameters["quoteChar"] | CsvOptions.quote |
CSV | OpenCsvSerDe | Table.StorageDescriptor.Parameters["serialization.encoding"] | CsvOptions.encoding |
CSV | OpenCsvSerDe | Table.StorageDescriptor.Parameters["skip.header.line.count"] | CsvOptions.skipLeadingRows |
JSON | Hive JsonSerDe | Table.StorageDescriptor.Parameters["serialization.encoding"] | JsonOptions.encoding |
Criar uma visualização em um conjunto de dados federado
Não é possível criar uma visualização em um conjunto de dados federado. No entanto, é possível criar uma visualização em um conjunto de dados padrão com base em uma tabela em um conjunto de dados federado. Para mais informações, consulte Criar visualizações.
Excluir um conjunto de dados federado
Excluir um conjunto de dados federado é igual a excluir qualquer outro conjunto de dados do BigQuery. Para mais informações, consulte Excluir conjuntos de dados.
Preços
Para informações sobre preços, consulte Preços do BigQuery Omni.
Limitações
- Todas as limitações do BigQuery Omni são aplicáveis.
- Não é possível adicionar, excluir ou atualizar dados ou metadados em tabelas em um conjunto de dados federado do AWS Glue.
- Não é possível criar novas tabelas ou visualizações materializadas em um conjunto de dados federado do AWS Glue.
- Um conjunto de dados federado do AWS Glue só pode ser criado usando a ferramenta bq e a API. O Console do Google Cloud não é suportado.
- As
INFORMATION_SCHEMA
visualizações não são compatíveis. - Segurança no nível da linha ,segurança no nível da coluna ,armazenamento em cache de metadados emascaramento de dados não são compatíveis.
- O tipo de dados
UNION
do Apache Hive não é compatível com tabelas Avro.
A seguir
- Saiba mais sobre o BigQuery Omni.
- Use o laboratório do BigQuery Omni com o AWS