Le connecteur Hadoop est la passerelle essentielle pour orchestrer les échanges entre votre Data Lake (Hive) et la puissance analytique de SAS Viya (CAS). Depuis la version 2023.10, cette connectivité repose sur le pilote JDBC Simba Apache Hive, garantissant une meilleure compatibilité standard.
L'expert distingue trois piliers pour une configuration optimale :
La Connectivité : Choix entre une connexion directe au NameNode ou une découverte dynamique via ZooKeeper (recommandée pour la haute disponibilité).
La Performance (Parallélisme) : C'est le point critique. Par défaut, le transfert est "sériel" (lent). Pour les gros volumes, il est impératif d'activer le chargement parallèle. Cela nécessite le déploiement de SAS Embedded Process (EP) sur le cluster Hadoop pour distribuer la charge.
La Sécurité : Le connecteur s'intègre nativement avec Kerberos, nécessitant une configuration précise du Realm et du Service Name.
Type : CREATION_INTERNE
Les exemples utilisent des données générées (datalines) ou des placeholders pour les connexions à des sources externes (Hive).
| 1 | /* Connexion basique à Hive sans accès HDFS direct */ |
| 2 | /* Les valeurs entre crochets angulaires (<>) doivent être remplacées par vos informations */ |
| 3 | |
| 4 | caslib hvcaslib_basic desc='Caslib Hadoop Basique' |
| 5 | dataSource=(srctype='hadoop', |
| 6 | server='your_hive_server', |
| 7 | username='your_username', |
| 8 | password='your_password', |
| 9 | schema='your_schema', |
| 10 | bulkload=false); |
| 11 | |
| 12 | /* Charger et activer le caslib */ |
| 13 | PROC CAS; |
| 14 | SESSION casauto; |
| 15 | caslib _all_ assign; |
| 16 | RUN; |
| 17 | |
| 18 | /* Afficher les informations sur le caslib */ |
| 19 | PROC CAS; |
| 20 | SESSION casauto; |
| 21 | caslib hvcaslib_basic info; |
| 22 | RUN; |
| 23 | QUIT; |
| 1 | /* Connexion à Hive avec découverte de service dynamique via ZooKeeper */ |
| 2 | /* Les valeurs entre crochets angulaires (<>) doivent être remplacées par vos informations */ |
| 3 | |
| 4 | caslib zoocaslib desc='Caslib ZooKeeper Hadoop' |
| 5 | dataSource=(srctype='hadoop', |
| 6 | username='your_username', |
| 7 | password='your_password', |
| 8 | dataTransferMode='serial', |
| 9 | hadoopJarPath='<Hadoop_jar_path_directory>', |
| 10 | hadoopConfigDir='<Hadoop_configuration_directory>', |
| 11 | zooKeeperQuorum="<node1.company.com>,<node2.company.com>,<node3.company.com>", |
| 12 | zooKeeperNamespace='hiveserver2', |
| 13 | zooKeeperPort=2181, |
| 14 | schema='your_schema'); |
| 15 | |
| 16 | /* Charger et activer le caslib */ |
| 17 | PROC CAS; |
| 18 | SESSION casauto; |
| 19 | caslib _all_ assign; |
| 20 | RUN; |
| 21 | |
| 22 | /* Afficher les informations sur le caslib */ |
| 23 | PROC CAS; |
| 24 | SESSION casauto; |
| 25 | caslib zoocaslib info; |
| 26 | RUN; |
| 27 | QUIT; |
| 1 | /* Connexion à Hive avec authentification Kerberos */ |
| 2 | /* Les valeurs entre crochets angulaires (<>) doivent être remplacées par vos informations */ |
| 3 | |
| 4 | caslib hadoopkrb desc='Caslib Hadoop Kerberos' |
| 5 | dataSource=(srctype='hadoop', |
| 6 | server='your_hive_server', |
| 7 | schema='your_schema', |
| 8 | use_ssl=true, |
| 9 | krbAuthType=2, |
| 10 | krbHostFQDN='<myhost.company.com>', |
| 11 | krbRealm='<example.com>', |
| 12 | krbServiceName='hive', |
| 13 | bulkload=false); |
| 14 | |
| 15 | /* Charger et activer le caslib */ |
| 16 | PROC CAS; |
| 17 | SESSION casauto; |
| 18 | caslib _all_ assign; |
| 19 | RUN; |
| 20 | |
| 21 | /* Afficher les informations sur le caslib */ |
| 22 | PROC CAS; |
| 23 | SESSION casauto; |
| 24 | caslib hadoopkrb info; |
| 25 | RUN; |
| 26 | QUIT; |
| 1 | /* Création d'une table CAS de démonstration pour simuler une source Hive */ |
| 2 | DATA casuser.myHDdata; |
| 3 | INPUT id $ name $ value; |
| 4 | DATALINES; |
| 5 | 1 Apple 10 |
| 6 | 2 Banana 20 |
| 7 | 3 Cherry 30 |
| 8 | 4 Date 40 |
| 9 | ; |
| 10 | RUN; |
| 11 | |
| 12 | /* Connexion à Hive avec chargement parallèle activé */ |
| 13 | /* Les valeurs entre crochets angulaires (<>) doivent être remplacées par vos informations */ |
| 14 | |
| 15 | caslib hvcaslib_parallel desc='Caslib Hadoop avec Chargement Parallèle' |
| 16 | dataSource=(srctype='hadoop', |
| 17 | server='your_hive_server', |
| 18 | schema='your_schema', |
| 19 | username='your_username', |
| 20 | password='your_password', |
| 21 | dataTransferMode="parallel", |
| 22 | jobManagementURL='<Livy_URL>', |
| 23 | hadoopConfigDir='<path-to-EP-config-files>', |
| 24 | bulkLoad=false); |
| 25 | |
| 26 | /* Charger et activer le caslib */ |
| 27 | PROC CAS; |
| 28 | SESSION casauto; |
| 29 | caslib _all_ assign; |
| 30 | RUN; |
| 31 | |
| 32 | /* Charger la table 'myHDdata' de Hive (simulée ici par la table CAS) dans CAS */ |
| 33 | /* En pratique, 'myHDdata' serait une table existante dans Hive */ |
| 34 | PROC CASUTIL; |
| 35 | list files incaslib="hvcaslib_parallel"; |
| 36 | load casdata="myHDdata" incaslib="hvcaslib_parallel" outcaslib="casuser" |
| 37 | casout="HDdata_from_hvcaslib_parallel"; |
| 38 | list tables incaslib="casuser"; |
| 39 | contents casdata="HDdata_from_hvcaslib_parallel" incaslib="casuser"; |
| 40 | RUN; |
| 41 | QUIT; |
FedSQL est une implémentation propriétaire de SAS de la norme ANSI SQL:1999, offrant un accès évo...
Ce document explique comment les moteurs SAS gèrent l'accès et le traitement des fichiers de donn...
Ce document décrit les bibliothèques SAS par défaut (Work, User, Sashelp, Sasuser) fournies par S...
Ce document décrit les caractéristiques des moteurs SAS, incluant un résumé des moteurs courammen...