Guía SAS VIYA

Comprender y Gestionar las Caslibs en SAS Viya

Simon 23/04/2021 3 views

En la arquitectura SAS©® Viya™, la gestión eficiente de los datos se basa en un concepto fundamental: la Caslib. Una Caslib es un espacio en memoria en el servidor CAS (Cloud Analytics Services) destinado a contener tablas, controles de acceso e información sobre las fuentes de datos.

Este artículo explora los diferentes tipos de Caslibs, su alcance (scope) y cómo manipularlas mediante código SAS©, haciendo hincapié en las mejores prácticas para la carga y el intercambio de datos.

¿Qué es una Caslib?

Una Caslib actúa como un punto de acceso unificado. Permite conectar el servidor CAS a:

  1. Fuentes de datos externas (archivos, bases de datos como Oracle o Hadoop).

  2. Tablas en memoria que han sido cargadas en el servidor CAS.

También asocia controles de acceso que definen qué grupos de usuarios o individuos están autorizados a interactuar con los datos.

Los Tipos de Caslibs

Existen tres categorías principales de Caslibs, definidas por la forma en que se crean y gestionan:

1. Caslib Personal

Esta biblioteca se configura durante la instalación del servidor CAS. Cuando se inicia una sesión CAS, la Caslib personal siempre está disponible con un alcance global para el usuario actual. Permite acceder a las tablas CAS desde cualquier sesión que utilice el mismo identificador de usuario (ej: casuser).

2. Caslib Predefinida

Gestionadas por los administradores de CAS, estas bibliotecas tienen un alcance global. Se utilizan generalmente para fuentes de datos populares compartidas por una amplia gama de usuarios (por ejemplo, una conexión Hadoop-Hive u Oracle común a todo el equipo). El administrador gestiona los permisos de acceso.

3. Caslib Añadida Manualmente

Los usuarios autorizados pueden añadir Caslibs mediante una instrucción CASLIB (por ejemplo, en SAS©® Studio). Este es el método preferido para accesos a datos ad hoc, cuando el usuario no desea necesariamente compartir los datos con todo el servidor.


El Alcance de las Caslibs: Sesión vs Global

La noción de alcance (scope) es crucial para comprender la visibilidad y la persistencia de los datos.

Caslib con Alcance de Sesión (Session-Scope)

Si una Caslib se define sin la opción GLOBAL, se limita a la sesión actual.

  • Disponibilidad: Las tablas cargadas en esta Caslib solo son visibles para la sesión CAS específica del usuario.

  • Persistencia: Si el usuario abre una nueva sesión, la Caslib y sus tablas ya no serán accesibles.

Ejemplo de código (Session-Scope): El código a continuación crea una conexión Hive local a la sesión. Tenga en cuenta la ausencia de la opción GLOBAL y de la opción PROMOTE.

Illustration
1CAS mySession host="myServer.com" SESSOPTS=(CASLIB=casuser TIMEOUT=999 LOCALE="en_US");
2 
3/* Assignation d'une Caslib Hive standard (Session scope) */
4caslib hivelib desc="HIVE Caslib"
5 datasource=(SRCTYPE="HIVE",SERVER="myServerHadoop.com",
6 HADOOPCONFIGDIR="/opt/sas/hadoop/client_conf/",
7 HADOOPJARPATH="/opt/sas/hadoop/client_jar/",
8 schema="default", dfDebug=sqlinfo);
9 
10/* Chargement des tables Hive (En mémoire) */
11PROC CASUTIL;
12 load casdata="stocks" casout="stocks" outcaslib="hivelib" incaslib="hivelib";
13QUIT;

Si el usuario intenta acceder a esta tabla stocks desde una nueva sesión (mySession2), recibirá un error que indica que la Caslib no existe:

ERROR: The caslib 'hivelib' does not exist in this session.

Caslib con Alcance Global (Global-Scope)

Una Caslib definida con la opción GLOBAL es accesible para otros usuarios o sesiones, sujeto a los controles de acceso.

  • Compartición: Para que una tabla se comparta, debe cargarse con la opción PROMOTE.

  • Persistencia: La definición de la biblioteca persiste más allá de la sesión única.

Ejemplo de código (Global-Scope): Aquí, la opción GLOBAL hace que la biblioteca sea persistente, y PROMOTE hace que la tabla sea accesible para los demás.

1CAS mySession host="myServer.com" SESSOPTS=(CASLIB=casuser TIMEOUT=999 LOCALE="en_US");
2 
3/* Assignation d'une Caslib Hive Globale */
4caslib hivelib desc="HIVE Caslib"
5 datasource=(SRCTYPE="HIVE",SERVER="myServerHadoop.com",
6 HADOOPCONFIGDIR="/opt/sas/hadoop/client_conf/",
7 HADOOPJARPATH="/opt/sas/hadoop/client_jar/",
8 schema="default", dfDebug=sqlinfo) GLOBAL;
9 
10/* Chargement et promotion de la table */
11PROC CASUTIL;
12 load casdata="stocks" casout="stocks" outcaslib="hivelib" incaslib="hivelib" PROMOTE;
13QUIT;
Una vez promovida, la tabla es visible para cualquier usuario que tenga los derechos de acceso. Otro usuario puede ver y utilizar esta tabla mediante la instrucción CASLIB _ALL_ ASSIGN;.

Mecanismos de Carga de Datos

Es importante distinguir dos mecanismos al cargar datos en una Caslib:

  1. Carga del lado del cliente (Client-side load): Los datos residen en la máquina cliente (por ejemplo, donde se ejecuta SAS© Studio). La transferencia se realiza del cliente al servidor CAS.

    • Sintaxis: Utiliza load data=... en PROC CASUTIL.

  2. Carga del lado del servidor (Server-side load): Los archivos de datos son físicamente accesibles por el servidor CAS (en el controlador CAS o un montaje NFS). A menudo es más eficiente para grandes volúmenes.

    • Sintaxis: Utiliza load casdata=... a través de conectores de datos (como PATH o HIVE).

    • Nota técnica: Para las Caslibs basadas en una ruta (PATH), la ruta física debe encontrarse en el servidor controlador CAS (o una unidad compartida montada en él).

Administración y Eliminación

Los administradores de CAS pueden gestionar los privilegios a través de SAS© Environment Manager. Sin embargo, a veces es necesario gestionar las Caslibs mediante programación.

Para eliminar una Caslib (si tiene los permisos), puede utilizar el procedimiento PROC CAS:

1PROC CAS;
2 TABLE.dropCaslib caslib="NomDeLaCaslib" quiet=TRUE;
3RUN;
4QUIT;