SAS VIYA Leitfaden

Caslibs in SAS Viya verstehen und verwalten

Simon 23/04/2021 5 vistas

In der SAS©® Viya™-Architektur basiert das effiziente Datenmanagement auf einem grundlegenden Konzept: der Caslib. Eine Caslib ist ein In-Memory-Speicherbereich auf dem CAS-Server (Cloud Analytics Services), der für die Aufnahme von Tabellen, Zugriffskontrollen und Informationen zu Datenquellen vorgesehen ist.

Dieser Artikel untersucht die verschiedenen Typen von Caslibs, ihren Geltungsbereich (Scope) und wie sie über SAS©-Code manipuliert werden können, wobei der Schwerpunkt auf Best Practices für das Laden und Teilen von Daten liegt.

Was ist eine Caslib?

Eine Caslib fungiert als einheitlicher Zugriffspunkt. Sie ermöglicht die Verbindung des CAS-Servers mit:

  1. Externen Datenquellen (Dateien, Datenbanken wie Oracle oder Hadoop).

  2. In-Memory-Tabellen, die auf den CAS-Server geladen wurden.

Sie ordnet auch Zugriffskontrollen zu, die definieren, welche Benutzergruppen oder Einzelpersonen berechtigt sind, mit den Daten zu interagieren.

Die Typen von Caslibs

Es gibt drei Hauptkategorien von Caslibs, die sich durch die Art ihrer Erstellung und Verwaltung definieren:

1. Persönliche Caslib

Diese Bibliothek wird bei der Installation des CAS-Servers konfiguriert. Wenn eine CAS-Sitzung initiiert wird, ist die persönliche Caslib immer mit globalem Geltungsbereich für den aktuellen Benutzer verfügbar. Sie ermöglicht den Zugriff auf CAS-Tabellen von jeder Sitzung, die dieselbe Benutzer-ID verwendet (z. B. casuser).

2. Vordefinierte Caslib

Diese Bibliotheken werden von CAS-Administratoren verwaltet und haben einen globalen Geltungsbereich. Sie werden in der Regel für beliebte Datenquellen verwendet, die von einer Vielzahl von Benutzern gemeinsam genutzt werden (z. B. eine gemeinsame Hadoop-Hive- oder Oracle-Verbindung für das gesamte Team). Der Administrator verwaltet die Zugriffsberechtigungen.

3. Manuell hinzugefügte Caslib

Autorisierte Benutzer können Caslibs über eine CASLIB-Anweisung (z. B. in SAS©® Studio) hinzufügen. Dies ist die bevorzugte Methode für Ad-hoc-Datenzugriffe, wenn der Benutzer die Daten nicht unbedingt mit dem gesamten Server teilen möchte.


Der Geltungsbereich von Caslibs: Sitzung vs. Global

Der Begriff des Geltungsbereichs (Scope) ist entscheidend für das Verständnis der Sichtbarkeit und Persistenz von Daten.

Caslib mit Sitzungs-Geltungsbereich (Session-Scope)

Wenn eine Caslib ohne die Option GLOBAL definiert wird, ist sie auf die aktuelle Sitzung beschränkt.

  • Verfügbarkeit: In dieser Caslib geladene Tabellen sind nur für die spezifische CAS-Sitzung des Benutzers sichtbar.

  • Persistenz: Wenn der Benutzer eine neue Sitzung öffnet, sind die Caslib und ihre Tabellen nicht mehr zugänglich.

Code-Beispiel (Session-Scope): Der unten stehende Code erstellt eine lokale Hive-Verbindung zur Sitzung. Beachten Sie das Fehlen der Option GLOBAL und der Option 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;

Wenn der Benutzer versucht, auf diese Tabelle stocks von einer neuen Sitzung (mySession2) zuzugreifen, erhält er eine Fehlermeldung, die besagt, dass die Caslib nicht existiert:

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

Caslib mit globalem Geltungsbereich (Global-Scope)

Eine Caslib, die mit der Option GLOBAL definiert wurde, ist für andere Benutzer oder Sitzungen zugänglich, vorbehaltlich der Zugriffskontrollen.

  • Freigabe: Damit eine Tabelle freigegeben werden kann, muss sie mit der Option PROMOTE geladen werden.

  • Persistenz: Die Definition der Bibliothek bleibt über die einzelne Sitzung hinaus bestehen.

Code-Beispiel (Global-Scope): Hier macht die Option GLOBAL die Bibliothek persistent, und PROMOTE macht die Tabelle für andere zugänglich.

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;
Nach der Promotion ist die Tabelle für jeden Benutzer mit entsprechenden Zugriffsrechten sichtbar. Ein anderer Benutzer kann diese Tabelle dann über die Anweisung CASLIB _ALL_ ASSIGN; sehen und verwenden.

Mechanismen zum Laden von Daten

Es ist wichtig, zwei Mechanismen beim Laden von Daten in eine Caslib zu unterscheiden:

  1. Client-seitiges Laden (Client-side load): Die Daten befinden sich auf der Clientmaschine (z. B. dort, wo SAS© Studio läuft). Die Übertragung erfolgt vom Client zum CAS-Server.

    • Syntax: Verwendet load data=... in PROC CASUTIL.

  2. Server-seitiges Laden (Server-side load): Die Datendateien sind physisch für den CAS-Server zugänglich (auf dem CAS-Controller oder einer NFS-Freigabe). Dies ist oft leistungsfähiger für große Datenmengen.

    • Syntax: Verwendet load casdata=... über Datenkonnektoren (wie PATH oder HIVE).

    • Technischer Hinweis: Für Caslibs, die auf einem Pfad (PATH) basieren, muss sich der physische Pfad auf dem CAS-Controller-Server (oder einem darauf gemounteten gemeinsam genutzten Laufwerk) befinden.

Verwaltung und Löschen

CAS-Administratoren können Berechtigungen über den SAS© Environment Manager verwalten. Manchmal ist es jedoch notwendig, Caslibs programmatisch zu verwalten.

Um eine Caslib zu löschen (wenn Sie die Berechtigungen haben), können Sie die Prozedur PROC CAS verwenden:

1PROC CAS;
2 TABLE.dropCaslib caslib="NomDeLaCaslib" quiet=TRUE;
3RUN;
4QUIT;
Nach der Promotion ist die Tabelle für jeden Benutzer mit entsprechenden Zugriffsrechten sichtbar. Ein anderer Benutzer kann diese Tabelle dann über die Anweisung CASLIB _ALL_ ASSIGN; sehen und verwenden.