Conector Google Cloud Storage para Amazon Athena
O conector Google Cloud Storage para Amazon Athena permite que o Amazon Athena execute consultas em arquivos Parquet e CSV armazenados em um bucket do Google Cloud Storage (GCS). Depois de agrupar um ou mais arquivos Parquet ou CSV em uma pasta não particionada ou particionada em um bucket do GCS, você poderá organizá-los em uma tabela de banco de dados do AWS Glue
Se você tiver o Lake Formation habilitado em sua conta, o perfil do IAM para seu conector Lambda federado para Athena que você implantou no AWS Serverless Application Repository deve ter acesso de leitura ao AWS Glue Data Catalog no Lake Formation.
Para ver um artigo que mostra como usar o Athena para executar consultas em arquivos Parquet ou CSV em um bucket do GCS, consulte a postagem Use Amazon Athena to query data stored in Google Cloud Platform
Pré-requisitos
-
Configure um banco de dados e uma tabela do AWS Glue que correspondam ao seu bucket e suas pastas no Google Cloud Storage. Para ver as etapas, consulte Configuração de bancos de dados e tabelas no AWS Glue mais adiante neste documento.
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 Implantação de um conector de fonte de dados ou Usar o AWS Serverless Application Repository para implantar um conector de fonte de dados.
Limitações
-
Não há suporte para operações de gravação de DDL.
-
Quaisquer limites relevantes do Lambda. Para obter mais informações, consulte Cotas do Lambda no Guia do desenvolvedor do AWS Lambda.
-
Atualmente, o conector é compatível somente com o tipo
VARCHAR
de colunas de partição (string
ouvarchar
em um esquema de tabela do AWS Glue). Outros tipos de campo de partição geram erros quando você os consulta no Athena.
Termos
Os termos a seguir estão relacionados ao conector GCS.
-
Manipulador: um manipulador Lambda que acessa seu bucket do GCS. Um manipulador pode ser para metadados ou para registros de dados.
-
Manipulador de metadados: um manipulador Lambda que recupera metadados do seu bucket do GCS.
-
Manipulador de registros: um manipulador Lambda que recupera registros de dados do seu bucket do GCS.
-
Manipulador composto: um manipulador Lambda que recupera tanto metadados quanto registros de dados do seu bucket do GCS.
Tipos de arquivos compatíveis
O conector GCS é compatível com os tipos de arquivo Parquet e CSV.
nota
Certifique-se de não colocar os arquivos CSV e Parquet no mesmo bucket ou caminho do GCS. Isso pode resultar em um erro de runtime se houver tentativa de ler os arquivos Parquet como CSV ou vice-versa.
Parâmetros
Use as variáveis de ambiente do Lambda apresentadas nesta seção para configurar o conector GCS.
-
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 a performance, especialmente se o local do derramamento usar criptografia no lado do servidor. -
secret_manager_gcp_creds_name: o nome do segredo no AWS Secrets Manager que contém suas credenciais do GCS no formato JSON (por exemplo,
GoogleCloudPlatformCredentials
).
Configuração de bancos de dados e tabelas no AWS Glue
Como a capacidade de inferência de esquema integrada do conector GCS é limitada, recomendamos que você use o AWS Glue para seus metadados. Os procedimentos a seguir mostram como criar um banco de dados e uma tabela do AWS Glue que você possa acessar a partir do Athena.
Criação de um banco de dados no AWS Glue
Você pode usar o console do AWS Glue para criar um banco de dados para uso com o conector GCS.
Para criar um banco de dados no AWS Glue
Faça login no AWS Management Console e abra o console do AWS Glue em https://console.aws.amazon.com/glue/
. -
Escolha Databases (Bancos de dados) no painel de navegação.
-
Selecione Adicionar banco de dados.
-
Em Name (Nome), insira um nome para o banco de dados que você deseja usar com o conector GCS.
-
Em Local, especifique
google-cloud-storage-flag
. Esse local informa ao conector do GCS que o banco de dados do AWS Glue contém as tabelas para os dados do GCS para consulta no Athena. O conector reconhece bancos de dados no Athena que têm esse sinalizador e ignora bancos de dados que não o têm. -
Selecione Criar banco de dados.
Criar uma tabela no AWS Glue
Agora você pode criar uma tabela para o banco de dados. Ao criar uma tabela do AWS Glue para usar com o conector GCS, você deve especificar metadados adicionais.
Para criar uma tabela no console do AWS Glue
-
No painel de navegação do console do AWS Glue, escolha Tables (Tabelas).
-
Na página Tables (Tabelas), escolha Add table (Adicionar tabela).
-
Na página Set table properties (Definir propriedades da tabela), insira as informações a seguir.
-
Name (Tabela): um nome exclusivo para a tabela.
-
Banco de dados: escolha o banco de dados do AWS Glue que você criou para o conector GCS.
-
Include path (Incluir caminho): Na seção Data store (Armazenamento de dados), em Include path (Incluir caminho), insira a localização do URI para GCS prefixada por
gs://
(por exemplo,gs://
). Se você tiver uma ou mais pastas de partição, não as inclua no caminho.gcs_table
/data
/nota
Quando você insere um caminho de table que não é do
s3://
tabela, o console do AWS Glue mostra um erro. Você pode ignorar esse erro. A tabela será criada com êxito. -
Formato de dados: para Classification (Classificação), selecione CSV ou Parquet.
-
-
Escolha Next (próximo).
-
Na página Choose or define schema (Escolher ou definir esquema), definir um esquema de tabela é altamente recomendado, mas não obrigatório. Se você não definir um esquema, o conector GCS tentará inferir um esquema para você.
Execute um destes procedimentos:
-
Se você quiser que o conector GCS tente inferir um esquema para você, escolha Next (Próximo) e, em seguida, escolha Create (Criar).
-
Para definir um esquema você mesmo, siga as etapas da próxima seção.
-
Definir um esquema de tabela no AWS Glue
Definir um esquema de tabela no AWS Glue requer mais etapas, mas oferece maior controle sobre o processo de criação da tabela.
Para definir um esquema para sua tabela no AWS Glue
-
Na página Choose or define schema (Escolher ou definir esquema), escolha Add (Adicionar).
-
Use a caixa de diálogo Add schema entry (Adicionar entrada de esquema) para fornecer um nome de coluna e um tipo de dados.
-
Para designar a coluna como uma coluna de partição, selecione a opção Set as partition key (Definir como chave de partição).
-
Escolha Save (Salvar) para salvar a alteração.
-
Selecione Add (Adicionar) para adicionar outra coluna.
-
Ao terminar de adicionar contas, escolha Next (Próximo).
-
Na página Review and create (Revisar e criar), revise a configuração e selecione Create (Criar).
-
Se o esquema contiver informações sobre partições, siga as etapas na próxima seção para adicionar um padrão de partição às propriedades da tabela em AWS Glue.
Adicionar um padrão de partição às propriedades da tabela no AWS Glue
Se seus buckets do GCS tiverem partições, você deverá adicionar o padrão de partição às propriedades da tabela no AWS Glue.
Para adicionar informações de partição às propriedades da tabela do AWS Glue
-
Na página de detalhes da tabela que você criou em AWS Glue, escolha Actions (Ações), Edit table (Editar tabela).
-
Na página Edit table (Editar tabela), role para baixo até a seção Table properties (Propriedades da tabela).
-
Escolha Add (Adicionar) para adicionar uma chave de partição.
-
Em Chave, digite
partition.pattern
. Essa chave define o padrão do caminho da pasta. -
Em Value (Valor), insira um padrão de caminho de pasta como
StateName=${statename}/ZipCode=${zipcode}/
, em questatename
ezipcode
delimitados por${}
são nomes de colunas de partição. O conector GCS é compatível com esquemas de partição Hive e não Hive. -
Quando terminar, escolha Salvar.
-
Para visualizar as propriedades da tabela que você acabou de criar, escolha a guia Advanced properties (Propriedades avançadas).
Nesse ponto, você pode navegar até o console do Athena. O banco de dados e a tabela que você criou no AWS Glue estão disponíveis para consulta no Athena.
Suporte ao tipo de dados
As tabelas a seguir mostram os tipos de dados com suporte para CSV e Parquet.
CSV
Natureza dos dados | Tipo de dados inferido |
---|---|
Os dados parecem um número | BIGINT |
Os dados parecem uma string | VARCHAR |
Os dados parecem de ponto flutuante (flutuante, duplo ou decimal) | DOUBLE |
Os dados parecem uma data | Timestamp |
Dados que contêm valores verdadeiros/falsos | BOOL |
Parquet
PARQUET | Athena (Seta) |
---|---|
BINARY | VARCHAR |
BOOLEAN | BOOL |
DOUBLE | DOUBLE |
ENUM | VARCHAR |
FIXED_LEN_BYTE_ARRAY | DECIMAL |
FLOAT | FLOAT (32 bits) |
INT32 |
|
INT64 |
|
INT96 | Timestamp |
MAP | MAP |
STRUCT | STRUCT |
LIST | LIST |
Permissões obrigatórias
Os detalhes completos sobre as políticas do IAM exigidas por esse conector podem ser encontrados na seção Policies
do arquivo athena-gcs.yaml
-
Acesso de gravação do Amazon S3: o conector requer acesso de gravação a um local no Amazon S3 para mostrar resultados de grandes consultas.
-
Athena GetQueryExecution: o conector usa esta permissão para falhar rapidamente quando a consulta upstream do Athena é encerrada.
-
AWS Glue Data Catalog: o conector GCS requer acesso somente de leitura ao AWS Glue Data Catalog para obter informações do esquema.
-
CloudWatch Logs: o conector requer acesso ao CloudWatch Logs para armazenar registros.
Performance
Quando o esquema da tabela contém campos de partição e a propriedade partition.pattern
da tabela está configurada corretamente, você pode incluir o campo de partição na cláusula WHERE
de suas consultas. Para essas consultas, o conector GCS usa as colunas de partição para refinar o caminho da pasta GCS e evitar a varredura de arquivos desnecessários nas pastas do GCS.
Para conjuntos de dados Parquet, selecionar um subconjunto de colunas resulta em menos dados sendo verificados. Isso geralmente resulta em um runtime de consulta mais curto quando a projeção de coluna é aplicada.
Para conjuntos de dados CSV, a projeção de colunas não é compatível e não reduz a quantidade de dados que estão sendo digitalizados.
As cláusulas LIMIT
reduzem a quantidade de dados verificados, mas se você não fornecer um predicado, deverá aguardar que as consultas SELECT
com uma cláusula LIMIT
verifiquem, no mínimo, 16 MB de dados. O conector GCS examina mais dados para conjuntos de dados maiores do que para conjuntos de dados menores, independentemente da cláusula LIMIT
aplicada. Por exemplo, a consulta SELECT * LIMIT 10000
examina mais dados em busca de um conjunto de dados subjacente maior do que de um menor.
Informações de licença
Ao usar esse conector, você reconhece a inclusão de componentes de terceiros, cuja lista pode ser encontrada no arquivo pom.xml
Recursos adicionais
Para obter mais informações sobre esse conector, visite o site correspondente