Database

SAS e Impala: Cómo definir un Request Pool a través de una conexión ODBC

Simon 26/05/2024 2 vues

Cuando se trabaja con SAS© para interactuar con entornos de Big Data como Hadoop Impala, la gestión de recursos es crucial. Un requisito común es asignar una sesión a un "Request Pool" (grupo de recursos) específico para garantizar que las consultas sean priorizadas o gestionadas correctamente por el clúster.

Aunque el uso de SQL Pass-Through permite ejecutar comandos de configuración a través de una instrucción EXECUTE, este método no siempre permite beneficiarse de la flexibilidad de una biblioteca SAS© (LIBNAME).

A continuación se explica cómo configurar directamente un grupo de solicitudes al declarar una biblioteca a través de ODBC.

Illustration

El problema

El objetivo es crear una biblioteca SAS© (y no una simple consulta pass-through) que apunte a un esquema de Impala, forzando al mismo tiempo la sesión a utilizar un request_pool específico desde la inicialización.

Una conexión ODBC estándar no transmite automáticamente estos parámetros de sesión sin una configuración explícita.

La solución: El parámetro dbconinit

La clave reside en el uso de la opción dbconinit (Database Connection Initialization). Esta opción permite especificar un comando SQL que se ejecutará inmediatamente después de establecer la conexión, pero antes de cualquier lectura o escritura de datos.

Es el lugar ideal para colocar el comando de Impala SET request_pool.

Implementación

A continuación se muestra la sintaxis completa para declarar su biblioteca. En este ejemplo, nos conectamos a una fuente DSN llamada MYIMPALA y definimos el pool a un valor específico.

1LIBNAME eap32 odbc
2 noprompt="dsn=MYIMPALA;"
3 schema=pc_anltcclientref_analysis
4 dbconinit="set request_pool='ACE-S-FRA-EAP-PROD-PC_ANLTCCLIENTREF'"
5 access=readonly;
Detalle de los parámetros:

noprompt="dsn=..." : Define el origen de datos ODBC sin abrir una ventana de diálogo.

schema : Apunta al esquema de base de datos específico.

dbconinit : Aquí es donde ocurre la magia. El comando set request_pool='...' se envía al servidor Impala para configurar el entorno de la sesión.

access=readonly : Una buena práctica para asegurar que el acceso a los datos analíticos permanezca en solo lectura.

Gracias a la opción dbconinit, no es necesario recurrir a métodos complejos de Pass-Through para una simple configuración de sesión. De este modo, se conserva la ventaja de tener una biblioteca SAS© estándar, navegable y utilizable directamente en sus pasos Data o procedimientos, respetando al mismo tiempo las reglas de asignación de recursos de su clúster Hadoop.