Data Engineering : Pourquoi (et comment) utiliser le format colonne ORC pour accélérer vos requêtes analytiques ?

Ce code est également disponible en : Deutsch English Español
Niveau de difficulté
Confirmé
Publié le :
Michael

Le Conseil de l'Expert

Michael
Responsable de l'infrastructure Viya.

Dans les environnements Big Data, le format ORC (Optimized Row Columnar) est devenu un standard pour concilier compression et rapidité d'accès. L'utilisation de l'option DBCREATE_TABLE_OPTS au sein d'une étape DATA SAS permet de piloter directement la structure physique de vos tables dans Hadoop, garantissant une intégration transparente entre votre code SAS et votre écosystème Data Lake.

Le stockage ORC : Un atout pour le Big Data
Le format ORC (Optimized Row Columnar) est un format de stockage orienté colonnes hautement performant. Contrairement aux fichiers plats traditionnels, il permet de sauter des colonnes entières lors de la lecture si elles ne sont pas nécessaires à l'analyse, réduisant ainsi drastiquement les entrées/sorties (I/O).

Le partitionnement (ici par dealer) crée des sous-répertoires physiques sur le disque, permettant au moteur de recherche de ne scanner que les segments de données pertinents, ce qui est crucial pour le traitement distribué à grande échelle.
Attention : Ce code nécessite des droits administrateur.
Ce script SAS© démontre la création de tables au format ORC (Optimized Row Columnar) partitionnées par la variable 'dealer'. Il utilise des données en ligne (`cards;`) pour peupler les tables `mydblib.compare` et `mydblib.seqtab1`. Le script inclut également des étapes de nettoyage initial (`proc delete`) et des vérifications des données créées (`proc print`). Il est destiné à être exécuté après la soumission du programme `createLibname` pour établir la connexion à la base de données via `mydblib`.
Analyse des données

Type : CREATION_INTERNE


Les données sont définies directement dans le script via une clause `cards;` dans un DATA STEP. Elles sont ensuite utilisées pour créer des tables.

1 Bloc de code
PROC DELETE
Explication :
Supprime les tables `mydblib.seqtab1` et `mydblib.compare` existantes dans la bibliothèque `mydblib` pour assurer un environnement propre avant la création de nouvelles données.
Copié !
1 
2PROC DELETE
3DATA=mydblib.seqtab1;
4 
5RUN;
6PROC DELETE
7DATA=mydblib.compare;
8 
9RUN;
10 
2 Bloc de code
DATA STEP Data
Explication :
Ce DATA STEP crée trois tables : `mydblib.compare`, `work.apd` et `mydblib.seqtab1`. La table `mydblib.seqtab1` est configurée pour être une table ORC partitionnée par la colonne `dealer` dans le système de base de données sous-jacent (probablement Hadoop). Les données sont lues à partir des lignes fournies (`cards;`) et assignées aux variables spécifiées.
Copié !
1DATA mydblib.compare
2 work.apd
3 mydblib.seqtab1 (DBCREATE_TABLE_OPTS="PARTITIONED BY (dealer string)
4 STORED AS ORC");
5 
6 INPUT car $ color $ dealer $ sales returns dest $;
7CARDS;
8Toyota Red Smith 10000 100 NC
9Toyota Red Smith 15000 110 CT
10Chevy Green Smith 17000 45 NJ
11Ford Blue Smith 12000 0 CA
12Toyota Red Jones 4000 20 NC
13Ford Blue Finch 10000 400 NC
14Toyota Red Smith 10000 100 NJ
15Ford White Smith 15000 110 NC
16Ford Blue Smith 12000 0 NJ
17Toyota Green Jones 4000 20 NC
18Toyota Black Jones 4000 20 FL
19Toyota Red Jones 4000 20 NC
20Ford Blue Finch 10000 400 AL
21Chevy White Finch 10000 400 SC
22Ford Black Finch 10000 400 SC
23Chrysler Blue Finch 20000 400 NC
24Chrysler Green Finch 20000 400 CT
25Toyota Green Jones 10000 100 NC
26Toyota Red Finch 15000 110 CT
27Ford Green Smith 17000 45 NJ
28;
29RUN;
3 Bloc de code
PROC PRINT
Explication :
Affiche le contenu de la table `mydblib.seqtab1` à l'aide de PROC PRINT, avec un titre 'PROC PRINT OF DBLIB.SEQTAB1' pour l'identifier dans la sortie.
Copié !
1title1 '
2PROC PRINT OF DBLIB.SEQTAB1';
3PROC PRINT
4DATA=mydblib.seqtab1;
5 
6RUN;
7 
4 Bloc de code
PROC PRINT
Explication :
Affiche le contenu de la table `mydblib.compare` à l'aide de PROC PRINT, avec un titre 'PROC PRINT OF DBLIB.COMPARE' pour l'identifier dans la sortie.
Copié !
1title1 '
2PROC PRINT OF DBLIB.COMPARE';
3PROC PRINT
4DATA=mydblib.compare;
5 
6RUN;
7 
L'Astuce Pro
Lors de la creation de tables ORC via l option DBCREATE_TABLE_OPTS, l ordre des variables dans votre etape DATA est primordial. La variable utilisee pour le partitionnement (ici dealer) doit impérativement etre la derniere colonne definie dans votre instruction INPUT ou votre structure de table. Si elle se trouve au milieu ou au debut, le moteur de stockage Hive/Hadoop risque de rejeter l insertion ou de mal interpreter le schema, car le partitionnement deplace physiquement la variable en fin de structure dans les fichiers de metadonnees.
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.
Informations de Copyright : S A S S A M P L E L I B R A R Y PRODUCT: SAS/ACCESS to Hadoop


Documentation liée

Aucune documentation spécifique pour cette catégorie.