Big Data Architecture : Ne Bridez Plus vos Modèles, Générez des Données Structurées (Parquet) directement sur le Cluster

Ce code est également disponible en : Deutsch English Español
Niveau de difficulté
Débutant
Publié le :
Simon

Le Conseil de l'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.

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;
L'Astuce Pro
L'option globale sastrace activée au début du script est vitale pour le débogage des opérations Hadoop : elle force SAS à afficher dans la log les commandes HiveQL ou HDFS exactes générées en arrière-plan, ce qui est souvent le seul moyen de comprendre pourquoi un Bulkload échoue silencieusement.
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.