Conector do Amazon Athena para o Azure Synapse
O conector do Amazon Athena para o Azure Synapse Analytics
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
-
Não há suporte para operações de gravação de DDL.
-
Em uma configuração de multiplexador, o prefixo e o bucket de derramamento são compartilhados em todas as instâncias do banco de dados.
-
Quaisquer limites relevantes do Lambda. Para obter mais informações, consulte Cotas do Lambda no Guia do desenvolvedor do AWS Lambda.
-
Em condições de filtro, você deve converter os tipos de dados
Date
eTimestamp
para o tipo de dados apropriado. -
Para pesquisar valores negativos dos tipos
Real
eFloat
, use o operador<=
ou>=
. -
Não há suporte para os tipos de dados
binary
,varbinary
,image
erowversion
.
Termos
Os termos a seguir estão relacionados ao conector Synapse.
-
Instância do banco de dados: qualquer instância de um banco de dados implantado on-premises, no Amazon EC2 ou no Amazon RDS.
-
Manipulador: um manipulador Lambda que acessa sua instância de banco de dados. Um manipulador pode ser para metadados ou para registros de dados.
-
Manipulador de metadados: um manipulador Lambda que recupera metadados da sua instância de banco de dados.
-
Manipulador de registros: um manipulador Lambda que recupera registros de dados da sua instância de banco de dados.
-
Manipulador composto: um manipulador Lambda que recupera tanto metadados quanto registros de dados da sua instância de banco de dados.
-
Propriedade ou parâmetro: uma propriedade do banco de dados usada pelos manipuladores para extrair informações do banco de dados. Você configura essas propriedades como variáveis de ambiente do Lambda.
-
String de conexão: uma string de texto usada para estabelecer uma conexão com uma instância de banco de dados.
-
Catálogo: um catálogo não AWS Glue registrado no Athena que é um prefixo obrigatório para a propriedade
connection_string
. -
Manipulador de multiplexação: um manipulador Lambda que pode aceitar e usar várias conexões de banco de dados.
Parâmetros
Use as variáveis de ambiente do Lambda nesta seção para configurar o conector Synapse.
String de conexão
Use uma string de conexão JDBC no seguinte formato para se conectar a uma instância de banco de dados.
synapse://${
jdbc_connection_string
}
Uso de um manipulador de multiplexação
É possível usar um multiplexador para se conectar a várias instâncias de banco de dados com uma única função do Lambda. As solicitações são encaminhadas por nome do catálogo. Use as seguintes classes no Lambda.
Manipulador | Classe |
---|---|
Manipulador composto | SynapseMuxCompositeHandler |
Manipulador de metadados | SynapseMuxMetadataHandler |
Manipulador de registros | SynapseMuxRecordHandler |
Parâmetros do manipulador de multiplexação
Parâmetro | Descrição |
---|---|
$ |
Obrigatório. Uma string de conexão de instância de banco de dados. Prefixe a variável de ambiente com o nome do catálogo usado no Athena. Por exemplo, se o catálogo registrado no Athena for mysynapsecatalog , então o nome da variável de ambiente será mysynapsecatalog_connection_string . |
default |
Obrigatório. A string de conexão padrão. Essa string é usada quando o catálogo for lambda:${ AWS_LAMBDA_FUNCTION_NAME } . |
As propriedades de exemplo a seguir são para uma função do Lambda MUX do Synapse que ofereça suporte a duas instâncias de banco de dados: synapse1
(o padrão) e synapse2
.
Propriedade | Valor |
---|---|
default |
synapse://jdbc:synapse://synapse1.hostname:port;databaseName= |
synapse_catalog1_connection_string |
synapse://jdbc:synapse://synapse1.hostname:port;databaseName= |
synapse_catalog2_connection_string |
synapse://jdbc:synapse://synapse2.hostname:port;databaseName= |
Fornecimento de credenciais
Para fornecer um nome de usuário e uma senha para seu banco de dados na string de conexão JDBC, é possível usar as propriedades da string de conexão ou o AWS Secrets Manager.
-
String de conexão: um nome de usuário e uma senha podem ser especificados como propriedades na string de conexão do JDBC.
Importante
Como prática recomendada de segurança, não use credenciais codificadas em suas variáveis de ambiente ou strings de conexão. Para obter informações sobre como mover seus segredos codificados para o AWS Secrets Manager, consulte Mover segredos codificados para o AWS Secrets Manager no Guia do usuário do AWS Secrets Manager.
-
AWS Secrets Manager: para usar o recurso Athena Federated Query com o AWS Secrets Manager, a VPC conectada à sua função do Lambda deve ter acesso à Internet
ou um endpoint da VPC para se conectar ao Secrets Manager. É possível colocar o nome de um segredo no AWS Secrets Manager na sua string de conexão JDBC. O conector substitui o nome secreto pelos valores de
username
epassword
do Secrets Manager.Para instâncias de banco de dados do Amazon RDS, esse suporte é totalmente integrado. Se você usa o Amazon RDS, é altamente recomendável usar o AWS Secrets Manager e rotação de credenciais. Se seu banco de dados não usar o Amazon RDS, armazene as credenciais em JSON no seguinte formato:
{"username": "${username}", "password": "${password}"}
Exemplo de string de conexão com nome secreto
A string a seguir tem o nome do segredo ${secret_name}.
synapse://jdbc:synapse://hostname:port;databaseName=
<database_name>
;${secret_name
}
O conector usa o nome secreto para recuperar segredos e fornecer o nome de usuário e a senha, como no exemplo a seguir.
synapse://jdbc:synapse://hostname:port;databaseName=
<database_name>
;user=<user>
;password=<password>
Uso de um único manipulador de conexão
É possível usar os seguintes metadados de conexão única e manipuladores de registros para se conectar a uma única instância do Synapse.
Tipo de manipulador | Classe |
---|---|
Manipulador composto | SynapseCompositeHandler |
Manipulador de metadados | SynapseMetadataHandler |
Manipulador de registros | SynapseRecordHandler |
Parâmetros do manipulador de conexão única
Parâmetro | Descrição |
---|---|
default |
Obrigatório. A string de conexão padrão. |
Os manipuladores de conexão únicos oferecem suporte a uma instância de banco de dados e devem fornecer um parâmetro de string de conexão default
. Todas as outras strings de conexão são ignoradas.
O exemplo de propriedade a seguir é para uma única instância do Synapse com suporte em uma função do Lambda.
Propriedade | Valor |
---|---|
default |
synapse://jdbc:sqlserver://hostname:port;databaseName= |
Autenticação da Configuração do Active Directory
O conector Amazon Athena Azure Synapse oferece suporte à Autenticação do Microsoft Active Directory. Antes de começar, você deve configurar um usuário administrativo no portal do Microsoft Azure e usá-lo AWS Secrets Manager para criar um segredo.
Para configurar o usuário administrativo do Active Directory:
-
Usando uma conta que tenha privilégios administrativos, faça login no portal Microsoft Azure em https://portal.azure.com/
. -
Na caixa de pesquisa, insira Azure Synapse Analytics e escolha Azure Synapse Analytics.
-
Abra o menu à esquerda.
-
No painel de navegação, escolha Azure Active Directory.
-
Na guia Definir administrador, defina o administrador do Active Directory como um usuário novo ou existente.
-
Em AWS Secrets Manager, armazene as credenciais de nome de usuário e senha do administrador. Para obter informações sobre como criar um segredo no Secrets Manager, consulte Criação de um segredo do AWS Secrets Manager.
Para visualizar o segredo no Secrets Manager
Abra o console do Secrets Manager em https://console.aws.amazon.com/secretsmanager/
. -
No painel de navegação, escolha Secrets (Segredos).
-
Na página Secrets (Segredos), selecione o link do seu segredo.
-
Na página de detalhes do seu segredo, escolha Retrieve secret value (Recuperar valor do segredo).
Modificando a string de conexão
Para habilitar a Autenticação do Active Directory para o conector, modifique a string de conexão usando a seguinte sintaxe:
synapse://jdbc:synapse://hostname:port;databaseName=
database_name
;authentication=ActiveDirectoryPassword;{secret_name}
Usando o ActiveDirectoryServicePrincipal
O conector do Amazon Athena para o Azure Synapse também oferece suporte ao ActiveDirectoryServicePrincipal
. Para habilitar isso, modifique a string de conexão da seguinte forma:
synapse://jdbc:synapse://hostname:port;databaseName=
database_name
;authentication=ActiveDirectoryServicePrincipal;{secret_name}
Para secret_name
, especifique o ID do aplicativo ou cliente como o nome de usuário e o segredo de uma identidade de serviço principal como a senha.
Parâmetros de derramamento
O SDK do Lambda pode derramar dados no Amazon S3. Todas as instâncias do banco de dados acessadas pela mesma função do Lambda derramam no mesmo local.
Parâmetro | Descrição |
---|---|
spill_bucket |
Obrigatório. Nome do bucket de derramamento. |
spill_prefix |
Obrigatório. Prefixo de chave do bucket de derramamento. |
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. |
Suporte ao tipo de dados
A tabela a seguir mostra os tipos de dados correspondentes para Synapse e Apache Arrow.
Synapse | Arrow |
---|---|
bit | TINYINT |
tinyint | SMALLINT |
smallint | SMALLINT |
int | INT |
bigint | BIGINT |
decimal | DECIMAL |
numeric | FLOAT8 |
smallmoney | FLOAT8 |
money | DECIMAL |
float[24] | FLOAT4 |
float[53] | FLOAT8 |
real | FLOAT4 |
datetime | Date(MILLISECOND) |
datetime2 | Date(MILLISECOND) |
smalldatetime | Date(MILLISECOND) |
date | Date(DAY) |
horário | VARCHAR |
datetimeoffset | Date(MILLISECOND) |
char[n] | VARCHAR |
varchar[n/max] | VARCHAR |
nchar[n] | VARCHAR |
nvarchar[n/max] | VARCHAR |
Partições e divisões
Uma partição é representada por uma única coluna de partição do tipo varchar
. O Synapse oferece suporte a particionamento por intervalo, portanto, o particionamento é implementado extraindo a coluna da partição e o intervalo da partição das tabelas de metadados do Synapse. Esses valores de intervalo são usados para criar as divisões.
Performance
A seleção de um subconjunto de colunas diminui significativamente o runtime da consulta. O conector apresenta um controle de utilização significativo devido à simultaneidade.
O conector do Athena para o Synapse realiza a passagem direta de predicados para diminuir os dados examinados pela consulta. 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.
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 Synapse pode combinar essas expressões e passá-las diretamente ao Synapse para melhorar a funcionalidade e reduzir a quantidade de dados examinados.
Os seguintes operadores do conector do Athena para o Synapse 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, 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%');
Consultas de passagem
O conector Synapse é 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 Synapse, 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 Synapse. 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
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 ver um artigo que mostra como usar o Amazon QuickSight e a consulta federada Amazon Athena para criar painéis e visualizações em dados armazenados nos bancos de dados do Microsoft Azure Synapse, consulte Execute análises multinuvem usando o Amazon QuickSight, a consulta federada Amazon Athena e o Microsoft Azure Synapse
no AWSBlog Big Data. Para obter as informações mais recentes sobre a versão do driver JDBC, consulte o arquivo pom.xml
do conector Synapse em GitHub.com. Para obter mais informações sobre esse conector, visite o site correspondente
em GitHub.com.