Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Conector de Azure Data Lake Storage (ADLS) Gen2 de Amazon Athena
El conector Gen2 de Azure Data Lake Storage (ADLS)
-
Flujo de trabajo: el conector implementa la interfaz JDBC, que utiliza el controlador
com.microsoft.sqlserver.jdbc.SQLServerDriver
. El conector pasa las consultas al motor de Azure Synapse, que luego accede al lago de datos. -
Gestión de datos y S3: por lo general, el conector de Lambda consulta los datos directamente sin transferirlos a Amazon S3. Sin embargo, cuando los datos devueltos por la función de Lambda superan los límites de Lambda, los datos se escriben en el bucket de distribución de Amazon S3 que especifique para que Athena pueda leer el exceso.
-
Autenticación AAD: la AAD se puede utilizar como método de autenticación para el conector de Azure Synapse. Para utilizar AAD, la cadena de conexión JDBC que utiliza el conector debe contener los parámetros URL
authentication=ActiveDirectoryServicePrincipal
,AADSecurePrincipalId
yAADSecurePrincipalSecret
. Estos parámetros se pueden transferir directamente o mediante Secrets Manager.
Requisitos previos
Implemente el conector en su Cuenta de AWS mediante la consola de Athena o AWS Serverless Application Repository. Para obtener más información, consulte Implementación de un conector de origen de datos o Uso de AWS Serverless Application Repository para implementar un conector de origen de datos.
Limitaciones
-
Las operaciones de escritura de DDL no son compatibles.
-
En una configuración de multiplexor, el bucket de vertido y el prefijo se comparten en todas las instancias de base de datos.
-
Cualquier límite de Lambda relevante. Para obtener más información, consulte Cuotas de Lambda en la Guía para desarrolladores de AWS Lambda .
-
Los tipos de datos de marca de fecha y hora en condiciones de filtro se deben convertir a los tipos de datos adecuados.
Términos
Los siguientes términos hacen referencia al conector de Azure Data Lake Storage Gen2.
-
Instancia de base de datos: cualquier instancia de base de datos implementada en las instalaciones, en Amazon EC2 o en Amazon RDS.
-
Controlador: un controlador de Lambda que accede a la instancia de base de datos. Un controlador puede ser para los metadatos o para los registros de datos.
-
Controlador de metadatos: un controlador de Lambda que recupera los metadatos de la instancia de base de datos.
-
Controlador de registros: un controlador de Lambda que recupera registros de datos de la instancia de base de datos.
-
Controlador compuesto: un controlador de Lambda que recupera tanto los metadatos como los registros de datos de la instancia de base de datos.
-
Propiedad o parámetro: una propiedad de base de datos que usan los controladores para extraer información de la base de datos. Estas propiedades se configuran como variables de entorno de Lambda.
-
Cadena de conexión: una cadena de texto que se usa para establecer una conexión con una instancia de base de datos.
-
Catálogo: un AWS Glue catálogo que no está registrado en Athena y que es un prefijo obligatorio para la propiedad.
connection_string
-
Controlador de multiplexación: un controlador de Lambda que puede aceptar y usar varias conexiones a bases de datos.
Parámetros
Use las variables de entorno de Lambda de esta sección para configurar el conector de Azure Data Lake Storage Gen2.
Cadena de conexión
Use una cadena de conexión JDBC con el siguiente formato para conectarse a una instancia de base de datos.
datalakegentwo://${
jdbc_connection_string
}
Uso de un controlador de multiplexación
Puede usar un multiplexor para conectarse a varias instancias de base de datos con una sola función de Lambda. Las solicitudes se enrutan por nombre de catálogo. Use las siguientes clases en Lambda.
Controlador | Clase |
---|---|
Controlador compuesto | DataLakeGen2MuxCompositeHandler |
Controlador de metadatos | DataLakeGen2MuxMetadataHandler |
Controlador de registros | DataLakeGen2MuxRecordHandler |
Parámetros del controlador de multiplexación
Parámetro | Descripción |
---|---|
$ |
Obligatorio. Una cadena de conexión de instancia de base de datos. Agregue el prefijo a la variable de entorno con el nombre del catálogo usado en Athena. Por ejemplo, si el catálogo registrado en Athena es mydatalakegentwocatalog , el nombre de la variable de entorno será mydatalakegentwocatalog_connection_string . |
default |
Obligatorio. La cadena de conexión predeterminada. Esta cadena se usa cuando el catálogo es lambda:${ AWS_LAMBDA_FUNCTION_NAME } . |
Las siguientes propiedades de ejemplo son para una función Lambda de DataLakeGen 2 MUX que admite dos instancias de base de datosdatalakegentwo1
: (la predeterminada) y. datalakegentwo2
Propiedad | Valor |
---|---|
default |
datalakegentwo://jdbc:sqlserver://adlsgentwo1. |
datalakegentwo_catalog1_connection_string |
datalakegentwo://jdbc:sqlserver://adlsgentwo1. |
datalakegentwo_catalog2_connection_string |
datalakegentwo://jdbc:sqlserver://adlsgentwo2. |
Proporcionar credenciales
Para proporcionar un nombre de usuario y una contraseña para la base de datos en la cadena de conexión JDBC, puede usar las propiedades de la cadena de conexión o AWS Secrets Manager.
-
Cadena de conexión: se pueden especificar un nombre de usuario y una contraseña como propiedades en la cadena de conexión JDBC.
importante
Como práctica recomendada en materia de seguridad, no utilice credenciales codificadas en las variables de entorno ni en las cadenas de conexión. Para obtener información sobre cómo mover los secretos codificados a AWS Secrets Manager, consulte Mover los secretos codificados a AWS Secrets Manager en la Guía del usuario.AWS Secrets Manager
-
AWS Secrets Manager— Para utilizar la función Athena Federated Query, AWS Secrets Manager la VPC conectada a la función Lambda debe tener acceso a Internet o
un punto final de VPC para conectarse a Secrets Manager. Puede introducir el nombre de un secreto en la cadena de conexión JDBC AWS Secrets Manager . El conector reemplaza el nombre del secreto por los valores
username
ypassword
de Secrets Manager.Para las instancias de bases de datos de Amazon RDS, esta compatibilidad está estrechamente integrada. Si utiliza Amazon RDS, le recomendamos encarecidamente que utilice la rotación AWS Secrets Manager de credenciales. Si la base de datos no usa Amazon RDS, guarde las credenciales como archivos JSON con el siguiente formato:
{"username": "${username}", "password": "${password}"}
Ejemplo de cadena de conexión con nombre secreto
La siguiente cadena tiene el nombre secreto ${secret1_name}
.
datalakegentwo://jdbc:sqlserver://
hostname
:port
;databaseName=database_name
;${secret1_name}
El conector usa el nombre secreto para recuperar los secretos y proporcionar el nombre de usuario y la contraseña, como en el siguiente ejemplo.
datalakegentwo://jdbc:sqlserver://
hostname
:port
;databaseName=database_name
;user=user_name
;password=password
Uso de un controlador de conexión única
Puede usar los siguientes controladores de registros y metadatos de conexión única para conectarse a una sola instancia de Azure Data Lake Storage Gen2.
Tipo de controlador | Clase |
---|---|
Controlador compuesto | DataLakeGen2CompositeHandler |
Controlador de metadatos | DataLakeGen2MetadataHandler |
Controlador de registros | DataLakeGen2RecordHandler |
Parámetros de controlador de conexión única
Parámetro | Descripción |
---|---|
default |
Obligatorio. La cadena de conexión predeterminada. |
Los controladores de conexión única admiten una instancia de base de datos y deben proporcionar un parámetro de cadena de conexión default
. Se omiten todas las demás cadenas de conexión.
La siguiente propiedad de ejemplo es para una sola instancia de Azure Data Lake Storage Gen2 compatible con una función de Lambda.
Propiedad | Valor |
---|---|
default |
datalakegentwo://jdbc:sqlserver:// |
Parámetros de vertido
El SDK de Lambda puede verter datos en Amazon S3. Todas las instancias de bases de datos a las que se accede mediante la misma función de Lambda se vierten en la misma ubicación.
Parámetro | Descripción |
---|---|
spill_bucket |
Obligatorio. Nombre del bucket de vertido. |
spill_prefix |
Obligatorio. Prefijo de la clave del bucket de vertido. |
spill_put_request_headers |
(Opcional) Un mapa codificado en JSON de encabezados y valores de solicitudes para la solicitud putObject de Amazon S3 que se usa para el vertido (por ejemplo, {"x-amz-server-side-encryption" :
"AES256"} ). Para ver otros posibles encabezados, consulta la referencia PutObjectde la API de Amazon Simple Storage Service. |
Compatibilidad con tipos de datos
En la siguiente tabla, se muestran los tipos de datos correspondientes para ADLS Gen2 y Arrow.
ADLS Gen2 | Arrow |
---|---|
bit | TINYINT |
tinyint | SMALLINT |
smallint | SMALLINT |
int | INT |
bigint | BIGINT |
decimal | DECIMAL |
numérico | 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) |
hora | VARCHAR |
datetimeoffset | Date(MILLISECOND) |
char[n] | VARCHAR |
varchar[n/max] | VARCHAR |
Particiones y divisiones
Azure Data Lake Storage Gen2 usa almacenamiento de blobs de Gen2 compatible con Hadoop para almacenar archivos de datos. Los datos de estos archivos se consultan desde el motor de Azure Synapse. El motor de Azure Synapse trata los datos de Gen2 almacenados en los sistemas de archivos como tablas externas. Las particiones se implementan en función del tipo de datos. Si los datos ya se partieron y distribuyeron dentro del sistema de almacenamiento de Gen2, el conector recupera los datos como una sola división.
Rendimiento
El conector Azure Data Lake Storage Gen2 muestra un rendimiento de consulta más lento cuando ejecuta varias consultas a la vez y está sujeto a limitaciones.
El conector Azure Data Lake Storage Gen2 de Athena inserta predicados para reducir los datos analizados en la consulta. Los predicados simples y las expresiones complejas se insertan en el conector para reducir la cantidad de datos analizados y disminuir el tiempo de ejecución de las consultas.
Predicados
Un predicado es una expresión de la cláusula WHERE
de una consulta SQL que da como resultado un valor booleano y filtra las filas en función de varias condiciones. El conector Azure Data Lake Storage Gen2 de Athena puede combinar estas expresiones e insertarlas directamente en Azure Data Lake Storage Gen2 para mejorar la funcionalidad y reducir la cantidad de datos analizados.
Los siguientes operadores del conector Azure Data Lake Storage Gen2 de Athena admiten la inserción de predicados:
-
Booleano: AND, OR, NOT.
-
Igualdad: EQUAL, NOT_EQUAL, LESS_THAN, LESS_THAN_OR_EQUAL, GREATER_THAN, GREATER_THAN_OR_EQUAL, NULL_IF, IS_NULL.
-
Aritmética: ADD, SUBTRACT, MULTIPLY, DIVIDE, MODULUS, NEGATE.
-
Otros: LIKE_PATTERN, IN.
Ejemplo de inserción combinada
Para mejorar las capacidades de consulta, combine los tipos de inserciones, como en el siguiente ejemplo:
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%');
Información sobre licencias
Al utilizar este conector, usted reconoce la inclusión de componentes de terceros, cuya lista puede consultarse en el archivo pom.xml
Véase también
Para obtener información sobre la versión más reciente del controlador JDBC, consulte el archivo pom.xml
Para obtener información adicional acerca de este conector, visite el sitio correspondiente en .com