Conector do Amazon Athena para o Google BigQuery
O conector do Amazon Athena para o Google BigQuery
Pré-requisitos
Implante o conector na sua Conta da AWS usando o console do Athena ou o AWS Serverless Application Repository. Para obter mais informações, consulte Implantar um conector de fonte de dados ou Usar o AWS Serverless Application Repository para implantar um conector de origem de dados.
Limitações
-
As funções do Lambda têm um valor máximo de tempo limite de 15 minutos. Cada divisão executa uma consulta no BigQuery e precisa terminar com tempo suficiente para armazenar os resultados para que o Athena leia. Se a função do Lambda atingir o tempo limite, a consulta falhará.
-
O Google BigQuery diferencia maiúsculas e minúsculas. O conector tenta corrigir a capitalização dos nomes dos conjuntos de dados e dos nomes das tabelas, mas não faz nenhuma correção de capitalização nos ID de projetos. Isso é necessário porque o Athena coloca em minúsculas todos os metadados. Essas correções geram muitas chamadas extras para o Google BigQuery.
-
Não há suporte para o tipo de dado binário.
-
Devido à simultaneidade e aos limites de cota do Google BigQuery, o conector pode encontrar problemas de limite de cota do Google. Para evitar esses problemas, imponha o máximo possível de restrições ao Google BigQuery. Para obter informações sobre cotas do BigQuery, consulte Cotas e limites
na documentação do Google BigQuery.
Parâmetros
Use as variáveis de ambiente do Lambda nesta seção para configurar o conector Google BigQuery.
-
spill_bucket: especifica o bucket do Amazon S3 para dados que excedem os limites da função do Lambda.
-
spill_prefix: (opcional) assume como padrão uma subpasta no
spill_bucket
especificado chamadoathena-federation-spill
. Recomendamos que você configure um ciclo de vida de armazenamento do Amazon S3 neste local para excluir derramamentos anteriores a um número predeterminado de dias ou horas. -
spill_put_request_headers: (opcional) um mapa codificado em JSON de cabeçalhos e valores de solicitações para a solicitação
putObject
do Amazon S3 usada para o derramamento (por exemplo,{"x-amz-server-side-encryption" : "AES256"}
). Para outros cabeçalhos possíveis, consulte PutObject na Referência da API do Amazon Simple Storage Service. -
kms_key_id: (opcional) por padrão, todos os dados transmitidos para o Amazon S3 são criptografados usando o modo de criptografia autenticado AES-GCM e uma chave gerada aleatoriamente. Para que sua função do Lambda use chaves de criptografia mais fortes geradas pelo KMS, como
a7e63k4b-8loc-40db-a2a1-4d0en2cd8331
, é possível especificar um ID de chave do KMS. -
disable_spill_encryption: (opcional) quando definido como
True
, desativa a criptografia do derramamento. É padronizado comoFalse
, para que os dados transmitidos para o S3 sejam criptografados usando o AES-GCM — usando uma chave gerada aleatoriamente ou o KMS para gerar chaves. Desativar a criptografia do derramamento pode melhorar o desempenho, especialmente se o local do derramamento usar criptografia no lado do servidor. -
gcp_project_id: o ID do projeto (não o nome do projeto) que contém os conjuntos de dados que o conector deve ler (por exemplo,
semiotic-primer-1234567
). -
secret_manager_gcp_creds_name: o nome do segredo no AWS Secrets Manager que contém suas credenciais do BigQuery no formato JSON (por exemplo,
GoogleCloudPlatformCredentials
). -
big_query_endpoint: (opcional) o URL de um endpoint privado do BigQuery. Use esse parâmetro quando quiser acessar o BigQuery por meio de um endpoint privado.
Divisões e exibições
Como o conector BigQuery usa a API Storage Read do BigQuery para consultar tabelas, e a API Storage do BigQuery não é compatível com exibições, o conector usa o cliente do BigQuery com uma única divisão para exibições.
Performance
Para consultar tabelas, o conector BigQuery usa a API Storage Read do BigQuery, que usa um protocolo baseado em RPC que fornece acesso rápido ao armazenamento gerenciado do BigQuery. Para obter mais informações sobre a API BigQuery Storage Read, consulte Use the BigQuery Storage Read API to read table data
A seleção de um subconjunto de colunas acelera o runtime da consulta e reduz os dados verificados de forma significativa. O conector está sujeito a falhas de consulta à medida que a simultaneidade aumenta e, de forma geral, é um conector lento.
O conector do Athena para o Google BigQuery executa a passagem direta de predicados para diminuir os dados examinados pela consulta. Cláusulas LIMIT
, cláusulas ORDER BY
, predicados simples e expressões complexas são passados diretamente ao conector para reduzir a quantidade de dados examinados e o runtime de execução da consulta.
Cláusulas LIMIT
Uma instrução LIMIT N
reduz os dados examinados pela consulta. Com a passagem direta de LIMIT N
, o conector só retorna N
linhas para o Athena.
Principais N consultas
Uma das N
principais consultas especifica uma ordenação do conjunto de resultados e um limite no número de linhas retornadas. Você pode usar esse tipo de consulta para determinar os N
principais valores máximos ou N
principais valores mínimos para os conjuntos de dados. Com os N
pushdown principais, o conector só retorna N
linhas para o Athena.
Predicados
Um predicado é uma expressão na cláusula WHERE
de uma consulta SQL, que avalia para um valor booleano e filtra as linhas com base em várias condições. O conector do Athena para o Google BigQuery pode combinar essas expressões e passá-las diretamente ao Google BigQuery para melhorar a funcionalidade e reduzir a quantidade de dados examinados.
Os seguintes operadores do conector do Athena para o Google BigQuery são compatíveis com a passagem direta de predicados:
-
Booleanos: E, OU, NÃO
-
Igualdade: EQUAL, NOT_EQUAL, LESS_THAN, LESS_THAN_OR_EQUAL, GREATER_THAN, GREATER_THAN_OR_EQUAL, IS_DISTINCT_FROM, NULL_IF, IS_NULL
-
Aritméticos: ADICIONAR, SUBTRAIR, MULTIPLICAR, DIVIDIR, MÓDULO, NEGAR
-
Outros:LIKE_PATTERN, IN
Exemplo de passagem direta combinada
Para ter recursos aprimorados de consulta, combine os tipos de passagem direta, como no seguinte exemplo:
SELECT * FROM my_table WHERE col_a > 10 AND ((col_a + col_b) > (col_c % col_d)) AND (col_e IN ('val1', 'val2', 'val3') OR col_f LIKE '%pattern%') ORDER BY col_a DESC LIMIT 10;
Consultas de passagem
O conector Google BigQuery é compatível com consultas de passagem. As consultas de passagem usam uma função de tabela para enviar sua consulta completa para execução na fonte de dados.
Para usar consultas de passagem com o Google BigQuery, você pode empregar a seguinte sintaxe:
SELECT * FROM TABLE( system.query( query => '
query string
' ))
O exemplo de consulta a seguir envia uma consulta para uma fonte de dados no Google BigQuery. A consulta seleciona todas as colunas na tabela customer
, limitando os resultados a 10.
SELECT * FROM TABLE( system.query( query => 'SELECT * FROM customer LIMIT 10' ))
Informações de licença
O projeto do conector Google BigQuery do Amazon Athena é licenciado sob a Licença Apache-2.0
Ao usar esse conector, você reconhece a inclusão de componentes de terceiros, cuja lista pode ser encontrada no arquivo pom.xml
Recursos adicionais do
Para obter mais informações sobre esse conector, visite o site correspondente