Publié le :
ETL MIXTE

Exploration de l'option BULKLOAD avec SAS/ACCESS to Hadoop

Snippet validé
ATTENTION : Ce contenu est DÉSACTIVÉ. Il est invisible pour les visiteurs.
Attention : Ce code nécessite des droits administrateur.
Le script illustre l'utilisation de `PROC APPEND` avec l'interface `SAS©/ACCESS to Hadoop`. Il exécute trois tests distincts. Le premier utilise `BULKLOAD=YES` pour un chargement rapide de la table `sashelp.cars`. Le second effectue la même opération sans `BULKLOAD` pour comparaison. Le troisième test montre comment charger les données tout en spécifiant un format de stockage sous-jacent, ici `Parquet`, dans Hadoop. Chaque test est suivi d'une étape de nettoyage via `PROC SQL` pour supprimer la table créée, rendant le script ré-exécutable.
Analyse des données

Type : MIXTE


La source des données est la table `sashelp.cars`, qui est une table d'exemple interne à SAS. La destination est une base de données externe Hadoop, connectée via un `libname`. Le script ne lit pas de données externes, il y écrit.

1 Bloc de code
LIBNAME
Explication :
Définit une connexion à un serveur Hadoop via l'interface SAS/ACCESS to Hadoop. Il active également des options de traçage (`sastrace`) pour enregistrer des informations détaillées sur l'interaction avec la base de données dans le journal SAS.
Copié !
1LIBNAME mycdh hadoop server="quickstart.cloudera" user=cloudera password=cloudera;
2options sastrace=',,,d' sastraceloc=saslog nostsuffix;
3 
2 Bloc de code
PROC APPEND Data
Explication :
Ce bloc charge les données de la table `sashelp.cars` dans une nouvelle table `cars` sur le serveur Hadoop. L'option `bulkload=yes` active le mode de chargement en masse, optimisé pour les transferts de gros volumes de données. La table est ensuite supprimée avec `PROC SQL` pour nettoyer l'environnement.
Copié !
1PROC APPEND base=mycdh.cars (bulkload=yes)
2 DATA=sashelp.cars;
3RUN;
4 
5PROC SQL;
6 drop TABLE mycdh.cars;
7QUIT;
3 Bloc de code
PROC APPEND Data
Explication :
Ce bloc effectue le même chargement que le précédent mais sans l'option `bulkload=yes`. Cela permet de comparer la différence de performance entre un chargement standard (potentiellement ligne par ligne) et un chargement en masse. La table est ensuite supprimée.
Copié !
1PROC APPEND base=mycdh.cars
2 DATA=sashelp.cars;
3RUN;
4 
5PROC SQL;
6 drop TABLE mycdh.cars;
7QUIT;
4 Bloc de code
PROC APPEND Data
Explication :
Ce bloc charge à nouveau les données, mais utilise l'option `dbcreate_table_opts` pour passer une instruction spécifique à Hadoop lors de la création de la table. Ici, il demande que la table soit stockée au format de fichier 'Parquet', un format de stockage en colonnes très performant. La table est finalement supprimée.
Copié !
1PROC APPEND base=mycdh.cars (dbcreate_table_opts='stored as parquetfile')
2 DATA=sashelp.cars;
3RUN;
4 
5PROC SQL;
6 drop TABLE mycdh.cars;
7QUIT;
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.
Banner
Le Conseil de l'Expert
Expert
Simon
Expert SAS et fondateur.
« Testez toujours la stabilité de votre connexion avec un script ré-exécutable (incluant le nettoyage PROC SQL). C'est la seule façon de mesurer l'impact réel de vos options de chargement sans polluer votre cluster. »