O conector do Redis OSS no Amazon Athena permite que o Amazon Athena se comunique com as instâncias do Redis OSS para que você possa consultar os dados do Redis OSS com SQL. É possível usar o AWS Glue Data Catalog para mapear os pares de chave-valor do Redis OSS em tabelas virtuais.
Ao contrário dos armazenamentos de dados relacionais tradicionais, o Redis OSS não tem o conceito de tabela ou coluna. Em vez disso, o Redis OSS oferece padrões de acesso de valores-chave em que a chave é essencialmente uma string
e o valor é uma string
, z-set
ou hmap
.
É possível usar o AWS Glue Data Catalog para criar um esquema e configurar tabelas virtuais. As propriedades especiais da tabela informam ao conector do Redis OSS do Athena como mapear suas chaves e valores do Redis OSS em uma tabela. Para obter mais informações, consulte Configuração de bancos de dados e tabelas no AWS Glue adiante neste documento.
Esse conector não usa o Glue Connections para centralizar as propriedades de configuração no Glue. A configuração da conexão é feita por meio do Lambda.
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.
O conector do Amazon Athena para o Redis OSS oferece suporte ao Amazon MemoryDB e ao Amazon ElastiCache (Redis OSS).
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 Criar uma conexão de fonte de dados ou Usar o AWS Serverless Application Repository para implantar um conector de fonte de dados.
Configura uma VPC e um grupo de segurança antes de usar esse conector. Para ter mais informações, consulte Criar uma VPC para um conector de fonte de dados ou conexão do AWS Glue.
Parâmetros
Use os parâmetros nesta seção para configurar o conector do Redis.
-
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. -
glue_catalog: (opcional) use essa opção para especificar um catálogo do AWS Glue entre contas. Por padrão, o conector tenta obter metadados de sua própria conta do AWS Glue.
Configuração de bancos de dados e tabelas no AWS Glue
Para habilitar uma tabela do AWS Glue para uso com o Redis OSS, é possível definir as seguintes propriedades da tabela na tabela: redis-endpoint
, redis-value-type
e redis-keys-zset
ou redis-key-prefix
.
Além disso, qualquer banco de dados do AWS Glue que contenha tabelas do Redis OSS deve ter um redis-db-flag
na propriedade URI do banco de dados. Para definir a propriedade da URI redis-db-flag
, use o console do AWS Glue para editar o banco de dados.
A lista a seguir descreve as propriedades da tabela.
-
redis-endpoint: (obrigatório) o
nome do host
:
porta
:
senha
do servidor Redis que contém dados para essa tabela (por exemplo,athena-federation-demo.cache.amazonaws.com:6379
). Como alternativa, é possível armazenar o endpoint, ou parte do endpoint, em AWS Secrets Manager, usando ${Secret_Name
} como o valor da propriedade da tabela.
nota
Para usar o recurso de consulta federada do Athena com o AWS Secrets Manager, a VPC conectada à sua função do Lambda deve ter acesso à Internet
-
redis-keys-zset: (necessário se
redis-key-prefix
não for usado) uma lista separada por vírgulas de chaves cujo valor é um zset(por exemplo, active-orders,pending-orders
). Cada um dos valores no zset é tratado como uma chave que faz parte da tabela. A propriedaderedis-keys-zset
ou a propriedaderedis-key-prefix
devem ser definidas. -
redis-key-prefix: (necessário se
redis-keys-zset
não for usado) uma lista separada por vírgulas de prefixos de chave para verificar os valores na tabela (por exemplo,accounts-*,acct-
). A propriedaderedis-key-prefix
ou a propriedaderedis-keys-zset
devem ser definidas. -
redis-value-type: (obrigatório) define como os valores das chaves definidos por
redis-key-prefix
ouredis-keys-zset
são mapeados para sua tabela. Um literal é mapeado para uma única coluna. Um zset também é mapeado para uma única coluna, mas cada chave pode armazenar muitas linhas. Um hash permite que cada chave seja uma linha com várias colunas (por exemplo, um hash, literal ou zset). -
redis-ssl-flag: (opcional) quando for
True
, cria uma conexão Redis que usa SSL/TLS. O padrão éFalse
. -
redis-cluster-flag: (opcional) quando for
True
, permite o suporte para instâncias Redis em cluster. O padrão éFalse
. -
redis-db-number: (opcional) aplica-se somente a instâncias autônomas sem cluster. Defina esse número (por exemplo, 1, 2 ou 3) para ler de um banco de dados Redis não padrão. O padrão é o banco de dados lógico Redis 0. Esse número não se refere a um banco de dados no Athena ou no AWS Glue, mas a um banco de dados lógico Redis. Para obter mais informações, consulte Índice SELECT
na documentação do Redis.
Tipos de dados
O conector Redis OSS é compatível com os tipos de dados a seguir. Os fluxos do Redis OSS não são compatíveis.
Todos os valores do Redis OSS são recuperados como o tipo de dados string
. Em seguida, eles são convertidos em um dos seguintes tipos de dados do Apache Arrow, com base em como suas tabelas são definidas no AWS Glue Data Catalog.
Tipo de dados do AWS Glue | Tipo de dados Apache Arrow |
---|---|
int | INT |
string | VARCHAR |
bigint | BIGINT |
double | FLOAT8 |
float | FLOAT4 |
smallint | SMALLINT |
tinyint | TINYINT |
boolean | BIT |
binary | VARBINARY |
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-redis.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 do Redis 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.
-
Acesso de leitura do AWS Secrets Manager: se você optar por armazenar os detalhes do endpoint do Redis no Secrets Manager, deverá conceder ao conector acesso a esses segredos.
-
Acesso à VPC: o conector exige a capacidade de conectar e desconectar interfaces à sua VPC para que possa se conectar a ela e se comunicar com suas instâncias do Redis.
Performance
O conector do Redis OSS para o Athena tenta paralelizar as consultas com sua instância do Redis OSS de acordo com o tipo de tabela que você definiu (por exemplo, chaves zset ou chaves de prefixo).
O conector do Athena para Redis realiza a passagem direta de predicados para diminuir os dados examinados pela consulta. No entanto, as consultas que contêm um predicado na chave primária apresentam falhas relacionadas ao tempo limite. 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 Redis é resiliente ao controle de utilização devido à simultaneidade.
Consultas de passagem
O conector Redis é compatível com consultas de passagem. Você pode usar esse atributo para executar consultas que usam um script Lua em bancos de dados Redis.
Para usar consultas de passagem com o Redis, use a seguinte sintaxe:
SELECT * FROM TABLE(
system.script(
script => 'return redis.[call|pcall](query_script
)',
keys => '[key_pattern
]',
argv => '[script_arguments
]'
))
O exemplo a seguir executa um script Lua para obter o valor na chave l:a
.
SELECT * FROM TABLE(
system.script(
script => 'return redis.call("GET", KEYS[1])',
keys => '[l:a]',
argv => '[]'
))
Informações de licença
O projeto do conector do Redis do Amazon Athena é licenciado sob a Licença Apache-2.0
Recursos adicionais
Para obter mais informações sobre esse conector, visite o site correspondente