Créer une caslib avec sas-admin
Dans cet article, je vous montre comment créer simplement une caslib en ligne de commande avec l'utilitaire sas-admin cli de VIYA.
L'interface de ligne de commande (CLI) d'administration (que j'appelle par son petit nom de binaire sas-admin) permet d'effectuer des tâches d'admin VIYA telles que , comme le titre de cet article l'indique, la création de CASLIB dans CAS.
Cet outil est installé en même que votre environnement VIYA, mais vous pouvez également l'installer sur un serveur distant dédié à l'administration.
Pour cela, il suffit de télécharger l'utilitaire sur le site du support : SAS Administration CLI
Les exemples suivants supposent que vous vous êtes déjà connecté à SAS Viya en ligne de commande. Si vous êtes perdu, vous pouvez consulter la documentation Command-Line Interface: Preliminary Instructions
Présentation de la commande
Un exemple vaut mieux que des beaux discours :
1 |
/opt/sas/viya/home/bin/sas-admin cas caslibs create path --name caslibnhousset --path /opt/sas/nicolasdata --server cas-shared-default |
Dans l'exemple ci-dessus nous créons une caslib de type PATH, portant le nom caslibnhousset, pointant vers le répertoire /opt/sas/nicolasdata . La création se fait dans le CAS server cas-shared-default.
Pour plus d'informations sur les type de caslib qu'il est possible de créer, consultez l'option dataSource pour la CAS Action addCaslib
Création d'une caslib Oracle
Voici un exemple de création d'une caslib Oracle avec sas-admin :
1 |
/opt/sas/viya/home/bin/sas-admin cas caslibs create oracle --authentication-domain oradomain --server cas-shared-default --name oraXE --oracle-path oraXE<br> |
Création d'une caslib Oracle avec un fichier json
Il est possible d'utiliser un fichier json pour définir les options de création d'une caslib. Ce fichier json peut ensuite être utilisé en argument de sas-admin pour créer la caslib, via l'option --source-file
Dans l'exemple de commande ci-dessous, je génère un fichier json oraXE.json contenant les informations de la caslib oraXE :
1 |
/opt/sas/viya/home/bin/sas-admin --output json cas caslibs show-info --name oraXE --server cas-shared-default > ~/oraXE.json |
Il est ensuite possible de modifier ce fichier json pour créer une nouvelle caslib Oracle.
Une fois la modification effectué, on utilise donc l'option
--source-file pour créer la nouvelle caslib :
1 |
/opt/sas/viya/home/bin/sas-admin cas caslibs create oracle --server cas-shared-default --source-file ~/oraPRD.json |
Lister les caslib
1 |
/opt/sas/viya/home/bin/sas-admin cas caslibs list --server cas-shared-default --scope global --limit 10 --superuser --source-type oracle |
Et si l'authentification est faite via Kerberos ?
Un article complet pour le fonctionne de CAS Hadoop avec kerberos est dispnible sur mon blog VIYA,CAS et Kerberos
Lorsque vous créez une caslib vers une base de données, le domaine d'authentification est obligatoire. Que ce soit dans les paramètres de la commande sas-admin ou dans le fichier json.
Si vous ne spécifiez pas de domaine en paramètre ou dans le fichier json, vous obtiendrez l'erreur ci-dessous :
ERROR: The authentication domain must be specified.
Cela peut-être contraignant si l'authentification à la base de données utilise Kerberos pour l'authentification, ce qui est souvent le cas avec Hadoop.
Prenons par exemple le json ci-dessous de création d'une caslib hadoop :
Nous constations que l'authentification se fait via Kerberos ( principal=hive/hadoop.nih@NIH dans le paramètre uri) et qu'il n'y a donc pas de domaine d'authentification.
Si l'on tente de créer la caslib à partir de ce fichier json, on obtient l'erreur ci-dessous :
Pour contourner cette limitation, il est possible d'utiliser la datasource other à la place de hadoop :
1 |
/opt/sas/viya/home/bin/sas-admin cas caslibs list --server cas-shared-default --scope global --limit 10 --superuser --source-type hadoop |
Bonjour Nicolas,
J’ai un problème avec une CASLIB et j’aimerai avoir ton avis. Lorsque nous essayons d’établir une connexion CAS Data à partir du serveur SAS Production vers les points de montage /sasdata/prod/data ou /sasdata/prod/, une erreur se produit.
Mais lorsque nous nous connectons au même emplacement à partir du serveur SAS Dev, nous n’avons pas de problème.
Voici le message d’erreur :
Name: prodCAS (/sasdata/prod)
Type: File System
Source System: PATH
ERROR: You do not have permission to access /sasdata/prod/.
The action stopped due to errors.
property: TKCASTAB_PATH_NO_PRIV
uri: /casManagement/servers/cas-shared-default/caslibs/New%20Connection/tables
path: /SASDataExplorer/ui/datasources/validation
As-tu une idée ?
Merci pour votre message. Il y a une différence entre la configuration de votre VIYA de prod et votre VIYA de dev. Sans pousser les recherches, je pense que le groupe CASHostAccountRequired est manquant en production.
aussi, je vous inviter à vérifier la présence du groupe en dev et, si c’est ainsi que vous souhaitez que cela fonctionne dans Prod, vous devez imiter les paramètres dans Dev, plus précisément :
1) Créer un groupe avec l’ID CASHostAccountRequired dans la zone d’administration Users du SAS Environment Manager. Ajoutez ensuite votre ou vos utilisateurs au groupe CASHostAccountRequired.
2) Vérifiez que l’utilisateur que vous avez ajouté au groupe CASHostAccountRequired dispose des permissions correctes sur le système de fichiers où la caslib est créée (vous pouvez comparer les permissions du répertoire avec celles de Dev).
J’en profite pour vous donner un lien vers la documentation The CASHostAccountRequired Custom Group
La mise en place du groupe CASHostAccountRequired a résolu le problème ! Merci pour ton aide et pour ce super blog.