Publié le :
Administration CREATION_INTERNE

Gestion de session SAS/CONNECT et CAS

Ce code est également disponible en : Deutsch English Español
En attente de validation
Attention : Ce code nécessite des droits administrateur.
Le script commence par afficher des informations sur l'environnement d'exécution client (ID utilisateur, hôte, processus). Il tente ensuite de récupérer des états de variables système liées à SASCLOUDNATIVE et TCPNOIPADDR, ainsi que l'URL des services SAS©. Il initialise et démarre une session CAS, puis établit une connexion SAS©/CONNECT à un hôte distant (interne ou externe selon la configuration). Après avoir affiché des informations similaires pour l'environnement distant via RSUBMIT, il crée une table volumineuse localement, puis une autre table volumineuse sur le serveur distant. Il utilise l'instruction LIBNAME pour accéder au répertoire de travail distant depuis la session locale. Une pause de 5 minutes est incluse dans la session distante pour maintenir la session ouverte si exécutée en mode batch. Enfin, il termine proprement les sessions CAS et SAS©/CONNECT.
Analyse des données

Type : CREATION_INTERNE


Les données sont générées de manière interne dans le script à l'aide de DATA STEPs qui créent deux tables distinctes (une locale et une distante), chacune avec 100 millions d'observations et une variable numérique aléatoire.

1 Bloc de code
MACRO
Explication :
Ce bloc initialise l'option `NETENCRYPTALGORITHM` à `SSL` pour la sécurité réseau. Il affiche ensuite diverses informations sur l'environnement d'exécution local du client, telles que l'ID utilisateur, le nom d'hôte, le nom et l'ID du processus, ainsi que son mode. Il récupère et affiche également l'état des variables d'environnement `SASCLOUDNATIVE`, `TCPNOIPADDR` et `SAS_SERVICES_URL`.
Copié !
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 Bloc de code
CAS / SAS/CONNECT
Explication :
Ce bloc définit des variables macro pour configurer une session CAS, y compris le nom de la session, le type, le namespace et le serveur CAS. Il démarre ensuite une session CAS avec les paramètres spécifiés. Ensuite, il définit l'hôte pour une connexion SAS/CONNECT (avec des options pour une IP de cluster interne ou un NodePort externe) et établit une session SAS/CONNECT au serveur distant en utilisant un utilisateur et un mot de passe définis. Enfin, il transmet la variable macro `_sessionType` à la session distante via `%syslput`.
Copié !
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 Bloc de code
MACRO (via RSUBMIT)
Explication :
Ce bloc est exécuté sur le serveur distant via `RSUBMIT`. Il affiche des informations similaires à celles du client mais pour l'environnement du serveur distant, telles que l'ID utilisateur, l'hôte, le nom et l'ID du processus, ainsi que son mode. Il récupère et affiche également l'état des variables d'environnement `SASCLOUDNATIVE`, `TCPNOIPADDR` et `SAS_SERVICES_URL` sur le serveur.
Copié !
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 Bloc de code
DATA STEP Data
Explication :
Ce bloc DATA STEP crée une table SAS nommée `localbatch` (où `&_sessionType` est 'batch') dans la bibliothèque de travail locale. Cette table est générée avec 100 millions d'observations, chacune contenant un index `i` et une variable `j` remplie de nombres aléatoires.
Copié !
1DATA local&_sessionType;
2 DO i=1 to 100000000;
3 j=ranuni(1234);
4 OUTPUT;
5 END;
6RUN;
5 Bloc de code
DATA STEP / MACRO (via RSUBMIT) Data
Explication :
Ce bloc exécuté via `RSUBMIT` sur le serveur distant, affiche d'abord le type de session distante. Il crée ensuite une table SAS nommée `remotebatch` dans la bibliothèque de travail du serveur distant, similaire à la table locale, avec 100 millions d'observations aléatoires. Enfin, il utilise `%sysrput` pour renvoyer le chemin d'accès à la bibliothèque de travail du serveur distant à la session locale, stocké dans la variable macro `rsaswork`.
Copié !
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 Bloc de code
LIBNAME
Explication :
Ce bloc affiche le chemin de la bibliothèque de travail distante. Il utilise ensuite une instruction `LIBNAME` pour créer un raccourci `rsaswork` dans la session SAS locale, qui pointe vers le chemin de la bibliothèque de travail distante (`&rsaswork`) en utilisant la connexion SAS/CONNECT (`server=host`). Cela permet à la session locale d'accéder directement aux données stockées dans le répertoire de travail du serveur distant.
Copié !
1%put "&rsaswork";
2LIBNAME rsaswork "&rsaswork" server=host;
3 
7 Bloc de code
DATA STEP (via RSUBMIT)
Explication :
Exécuté sur le serveur distant via `RSUBMIT`, ce bloc `DATA _NULL_` utilise la fonction `CALL SLEEP` pour mettre la session distante en pause pendant 5 minutes (300 secondes). Ceci est utile pour maintenir la session active, notamment dans les environnements de traitement par lots où la session pourrait autrement se terminer prématurément.
Copié !
1rsubmit;
2 DATA _null_;
3 call sleep(5,60);
4 RUN;
5endrsubmit;
8 Bloc de code
CAS / SAS/CONNECT
Explication :
Ce bloc assure la fermeture propre des sessions ouvertes. Il termine la session CAS spécifiée par `&_sessionName._&_sessionType` et utilise `SIGNOFF _ALL_` pour déconnecter toutes les sessions SAS/CONNECT actives.
Copié !
1* waitfor _all_;
2 
3 
4/* Close both CAS and connect sessions */
5cas &_sessionName._&_sessionType terminate;
6signoff _all_;
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.