Publicado el :
Administración CREATION_INTERNE

Gestión de sesiones SAS/CONNECT y CAS

Este código también está disponible en: Deutsch English Français
En espera de validación
Attention : Este código requiere privilegios de administrador.
El script comienza mostrando información sobre el entorno de ejecución del cliente (ID de usuario, host, proceso). Luego intenta recuperar estados de variables del sistema relacionadas con SASCLOUDNATIVE y TCPNOIPADDR, así como la URL de los servicios SAS©. Inicializa e inicia una sesión CAS, luego establece una conexión SAS©/CONNECT a un host remoto (interno o externo según la configuración). Después de mostrar información similar para el entorno remoto a través de RSUBMIT, crea una tabla grande localmente, y luego otra tabla grande en el servidor remoto. Utiliza la instrucción LIBNAME para acceder al directorio de trabajo remoto desde la sesión local. Se incluye una pausa de 5 minutos en la sesión remota para mantener la sesión abierta si se ejecuta en modo batch. Finalmente, termina limpiamente las sesiones CAS y SAS©/CONNECT.
Análisis de datos

Type : CREATION_INTERNE


Los datos se generan internamente en el script usando DATA STEPs que crean dos tablas distintas (una local y otra remota), cada una con 100 millones de observaciones y una variable numérica aleatoria.

1 Bloque de código
MACRO
Explicación :
Este bloque inicializa la opción `NETENCRYPTALGORITHM` a `SSL` para la seguridad de la red. Luego muestra diversa información sobre el entorno de ejecución local del cliente, como el ID de usuario, el nombre de host, el nombre y el ID del proceso, así como su modo. También recupera y muestra el estado de las variables de entorno `SASCLOUDNATIVE`, `TCPNOIPADDR` y `SAS_SERVICES_URL`.
¡Copiado!
1OPTIONS NETENCRYPTALGORITHM=SSL;
2 
3%put ********** CLIENT ********;
4%put My local user ID is: &sysuserid;
5%put The local host name is: &syshostname;
6%put The local process name is: &sysprocessname;
7%put The local process ID is: &sysprocessid;
8%put The local process mode is: &sysprocessmode;
9 
10%let SASCLOUDNATIVE_state="%sysget(SASCLOUDNATIVE)";
11%put &SASCLOUDNATIVE_state;
12 
13%let TCPNOIPADDR_state="%sysget(TCPNOIPADDR)";
14%put &TCPNOIPADDR_state;
15 
16%let ENVIRONMENT="%sysget(SAS_SERVICES_URL)";
17%put &ENVIRONMENT;
2 Bloque de código
CAS / SAS/CONNECT
Explicación :
Este bloque define variables macro para configurar una sesión CAS, incluyendo el nombre de la sesión, el tipo, el espacio de nombres y el servidor CAS. Luego inicia una sesión CAS con los parámetros especificados. A continuación, define el host para una conexión SAS/CONNECT (con opciones para una IP de clúster interna o un NodePort externo) y establece una sesión SAS/CONNECT al servidor remoto usando un usuario y contraseña definidos. Finalmente, transmite la variable macro `_sessionType` a la sesión remota a través de `%syslput`.
¡Copiado!
1/* CAS session */
2%let _sessionName=&sysuserid;
3%let _sessionType=batch;
4%let _namespace=gelcorp;
5%let _casserver=default;
6 
7/* Start a CAS session on the cas-shared-&_casserver CAS server */
8cas &_sessionName._&_sessionType host="controller.sas-cas-server-&_casserver..&_namespace..svc.cluster.local" port=5570 sessopts=(metrics=true);
9 
10 
11/* Connect session */
12/* INTERNAL ClusterIP */
13 %let host=sas-connect-spawner 17551;
14/* EXTERNAL NodePort */
15* %let host=gelcorp.pdcesx03138.race.sas.com 30377;
16 
17SIGNON host user='geladm' pass='lnxsas';
18%syslput _sessionTypeRemote=&_sessionType;
3 Bloque de código
MACRO (via RSUBMIT)
Explicación :
Este bloque se ejecuta en el servidor remoto a través de `RSUBMIT`. Muestra información similar a la del cliente pero para el entorno del servidor remoto, como el ID de usuario, el host, el nombre y el ID del proceso, así como su modo. También recupera y muestra el estado de las variables de entorno `SASCLOUDNATIVE`, `TCPNOIPADDR` y `SAS_SERVICES_URL` en el servidor.
¡Copiado!
1rsubmit;
2 %put ********** SERVER ********;
3 %put My remote user ID is: &sysuserid;
4 %put The remote host name is: &syshostname;
5 %put The remote process name is: &sysprocessname;
6 %put The remote process ID is: &sysprocessid;
7 %put The remote process mode is: &sysprocessmode;
8 
9 %let SASCLOUDNATIVE_state="%sysget(SASCLOUDNATIVE)";
10 %put &SASCLOUDNATIVE_state;
11
12 %let TCPNOIPADDR_state="%sysget(TCPNOIPADDR)";
13 %put &TCPNOIPADDR_state;
14
15 %let ENVIRONMENT="%sysget(SAS_SERVICES_URL)";
16 %put &ENVIRONMENT;
17endrsubmit;
4 Bloque de código
DATA STEP Data
Explicación :
Este bloque DATA STEP crea una tabla SAS llamada `localbatch` (donde `&_sessionType` es 'batch') en la biblioteca de trabajo local. Esta tabla se genera con 100 millones de observaciones, cada una conteniendo un índice `i` y una variable `j` rellena con números aleatorios.
¡Copiado!
1DATA local&_sessionType;
2 DO i=1 to 100000000;
3 j=ranuni(1234);
4 OUTPUT;
5 END;
6RUN;
5 Bloque de código
DATA STEP / MACRO (via RSUBMIT) Data
Explicación :
Este bloque, ejecutado a través de `RSUBMIT` en el servidor remoto, muestra primero el tipo de sesión remota. Luego crea una tabla SAS llamada `remotebatch` en la biblioteca de trabajo del servidor remoto, similar a la tabla local, con 100 millones de observaciones aleatorias. Finalmente, utiliza `%sysrput` para devolver la ruta de acceso a la biblioteca de trabajo del servidor remoto a la sesión local, almacenada en la variable macro `rsaswork`.
¡Copiado!
1rsubmit;
2 %put &_sessionTypeRemote;
3 
4 DATA remote&_sessionTypeRemote;
5 DO i=1 to 100000000;
6 j=ranuni(1234);
7 OUTPUT;
8 END;
9 RUN;
10 
11 %sysrput rsaswork=%sysfunc(pathname(work));
12endrsubmit;
6 Bloque de código
LIBNAME
Explicación :
Este bloque muestra la ruta de la biblioteca de trabajo remota. Luego utiliza una instrucción `LIBNAME` para crear un acceso directo `rsaswork` en la sesión SAS local, que apunta a la ruta de la biblioteca de trabajo remota (`&rsaswork`) utilizando la conexión SAS/CONNECT (`server=host`). Esto permite que la sesión local acceda directamente a los datos almacenados en el directorio de trabajo del servidor remoto.
¡Copiado!
1%put "&rsaswork";
2LIBNAME rsaswork "&rsaswork" server=host;
3 
7 Bloque de código
DATA STEP (via RSUBMIT)
Explicación :
Ejecutado en el servidor remoto a través de `RSUBMIT`, este bloque `DATA _NULL_` utiliza la función `CALL SLEEP` para pausar la sesión remota durante 5 minutos (300 segundos). Esto es útil para mantener la sesión activa, especialmente en entornos de procesamiento por lotes donde la sesión podría terminar prematuramente.
¡Copiado!
1rsubmit;
2 DATA _null_;
3 call sleep(5,60);
4 RUN;
5endrsubmit;
8 Bloque de código
CAS / SAS/CONNECT
Explicación :
Este bloque asegura el cierre limpio de las sesiones abiertas. Termina la sesión CAS especificada por `&_sessionName._&_sessionType` y utiliza `SIGNOFF _ALL_` para desconectar todas las sesiones SAS/CONNECT activas.
¡Copiado!
1* waitfor _all_;
2 
3 
4/* Close both CAS and connect sessions */
5cas &_sessionName._&_sessionType terminate;
6signoff _all_;
Este material se proporciona "tal cual" por We Are Cas. No hay garantías, expresas o implícitas, en cuanto a la comerciabilidad o idoneidad para un propósito particular con respecto a los materiales o el código contenidos en este documento. We Are Cas no es responsable de los errores en este material tal como existe ahora o existirá, ni We Are Cas proporciona soporte técnico para el mismo.