Démarrer avec Windows Azure HDInsight et Data Explorer pour Excel 2013
Jean-Pierre Riehl, responsable de Practice Data & Business Intelligence de la société AZEO et MVP SQL Server nous faisait le plaisir d’introduire il a quelques jours sur ce blog la nouvelle extension Data Explorer pour Microsoft Excel 2013, extension (encore en pré-version) qui apporte une grande facilité dans la recherche, l’analyse et la compréhension de données pour le plus grand bonheur de la Business Intelligence (BI).
Pour faire écho à cette introduction dans le contexte des Big Data, et plus particulièrement dans celui de l’écosystème Hadoop avec un cluster « à la demande » via Windows Azure HDInsight, nous nous intéressons dans ce billet à la fonctionnalité d’import des données provenant de ce service Windows Azure HDInsight et de leur exploitation avec l’extension Data Explorer.
Vous trouverez sur le blog de l’équipe en charge de Data Explorer, au-delà d’un aperçu rapide des fonctionnalités et des annonces des mises à jour un cas d’utilisation avec un jeu de données sur HDInsight contenant l’historique des cotations de l’ensemble des actions sur le marché du New York Stock Exchange (NYSE) et ce entre 1970 et 2010 – la source de ces données est Infochimps. Ces données sont ensuite agrégées avec les rendements des 500 premières sociétés cotées aux Etats-Unis de la liste Standard & Poor's 500 (source de données publique Wikipédia).
Ce tutoriel que nous vous invitons à consulter se concentre sur la partie sur Excel. De façon à disposer d’une vue complète, nous vous proposons dans la suite de ce billet de mettre en place une interaction « de bout-en-bout » depuis un job exemple sur un cluster HDInsight hébergé sur Windows Azure et l’exploitation des résultats avec Microsoft Excel 2013.
Microsoft Excel 2013, un outil de BI
Microsoft Excel 2013 constitue un outil BI à part entière : il nous vient par exemple à l’esprit la fonctionnalité bien connue de tableaux ou graphiques croisés dynamiques. La version 2013 introduit de nombreuses nouveautés sur lesquelles Jean-Pierre Riehl revient ici.
Il convient à ce titre de mentionner un certain nombre d’extensions à l’image de Data Explorer, objet de ce billet, mais également PowerPivot (désormais intégré par défaut pour la construction de modèles dimensionnels), ou encore PowerView et « GeoFlow » (nom de code du projet). Quels sont les rôles et les utilités de chacun dans le contexte qui nous intéresse ?
Commençons par PowerPivot. Ce dernier permet dans la pratique d’effectuer une puissante analyse des données et créer des modèles dimensionnels élaborés. A même de travailler sur des grands volumes de données (des millions de lignes… - oui, oui tant que ça ! -) à partir de différentes sources de données, il autorise d'effectuer rapidement une analyse de l’information, et de créer de manière dynamique un modèle de données, à savoir une collection de tables et leurs relations qui reflètent les interactions réelles entre les fonctions d’entreprise et les processus. Ensuite le modèle se visualise avec une extension comme PowerView.
A l’origine proposée fonctionnalité dans l’environnement SharePoint, PowerView offre la possibilité de visualiser ses données différemment sous forme de tableau de bord personnalisable à volonté. A présent intégré par défaut à Microsoft Excel 2013 – l’infrastructure SharePoint n’est plus du tout nécessaire -, il constitue un outil interactif sous la forme d’un complément. Une vue PowerView correspond à une feuille du classeur Excel et opère à ce titre sur le modèle de données du classeur.
Toujours dans le domaine de la visualisation des données pour « faire jaillir » l’information, « GeoFlow » (nom de code du projet) est une nouvelle extension de visualisation de données en 3D et de narration qui fournit une méthode puissante simple d’appréhension pour afficher, explorer et interagir avec des données géographiques et le cas échéant également chronologiques (temporelles), permettant des découvertes dans les données qui pourraient être difficiles à identifier dans les tableaux 2D traditionnels et les graphiques. Avec « Geoflow », vous pouvez tracer jusqu'à un million de lignes en 3D sur une carte Bing Maps, voir comment les données évoluent dans le temps et partager avec d’autres vos découvertes à travers de belles captures d'écran et des visites guidées cinématographiques.
Pour finir notre tour d’horizon, l’extension Data Explorer est orientée récupération de données brutes, avec ou sans formatage - c’est là que se trouve sa grande force -, et toujours avec la possibilité d’en faire un modèle particulier ; la notion de modèle de données étant centrales dans Microsoft Excel 2013. Si les fonctionnalités et extensions précédentes s’utilisent pour la modélisation de processus et l’affichage d’indicateurs en 2D ou en 3D selon le cas, Data Explorer vise à créer une nouvelle valeur ajoutée à vos données : il les met en interaction avec d’autres.
L’extension Data Explorer permet ainsi :
- D’identifier et de consommer les données utiles en provenance de multiples sources de données (relationnelles, semi-structurées et structurées, OData, Hadoop, Windows Azure Marketplace), etc.) au sein d’un outil « tout en un ».
- De rechercher de nouvelles données via la capacité de « recherche intégrée » avec Excel.
- D’agréger ces données issues de sources multiples pour en créer plus de valeur ajoutée.
- D’utiliser des outils d’analyse comme PowerPivot au sein d’Excel.
- De restructurer à la volée les données si besoin via le langage de requête DAX (Data Analysis Expressions) (utilisé dans PowerPivot).
- De visualiser le résultat de l’analyse en 2D respectivement en 3D avec l’extension PowerView respectivement l’extension « GeoFlow ».
- Etc.
Vous l’avez compris, toutes ces fonctionnalités et extensions s’utilisent de concert et rendent Microsoft Excel 2013 encore plus puissant et abouti comme outil de BI.
Les présentations étant « ainsi faites », revenons à l’objet de notre tutoriel, un scénario couvrant la fonctionnalité d’importation des données en provenance de Windows Azure HDInsight.
Un rapide « cahier des charges » pour notre tutoriel
L’élaboration d’un programme Map/Reduce n’étant pas à proprement parlé l’objectif de ce billet – nous en abordons les principes ici -, nous nous contentons d’utiliser un exemple de la galerie d’exemples d’HDInsight, en l’occurrence WordCount, un programme régulièrement utilisé à des démonstrations et qui permet de compter les occurrences de mot dans un texte. Vous trouverez une description du principe du code source ici.
Pour les besoins de ce tutoriel, le principe de « notre » WordCount est le suivant :
- Nous disposons de plusieurs fichiers (eBooks au format texte) provenant du site gutenberg.org.
- Nous comptons le nombre de fois qu’apparaissent chaque mot.
- Nous écrivons le résultat dans un fichier avec en clé, le mot, suivit de sa valeur, le nombre de fois qu’il apparaît.
- Nous souhaitons récupérer ce résultat dans Microsoft Excel 2013 pour visualiser graphiquement les 50 mots les plus utilisés ordonnés du plus grand nombre d’occurrence au plus petit.
Compte tenu de ces éléments, ceci suppose deux étapes distinctes :
- La première se déroule sur notre cluster Hadoop pour le traitement des données brutes.
- La seconde sur le poste client avec Microsoft Excel 2013 et l’extension Data Explorer.
Ce découpage autorise :
- Un développeur à se charger de la partie traitement des données en programmant une application sous Hadoop et en l’exécutant via Windows Azure HDInsight.
- Un analyste statisticien à interpréter le résultat du traitement et à se charger de la mise en valeur.
Nous avons nos deux rôles, passons aux matériels nécessaires pour la mise en application.
Pour les besoins de ce tutoriel, sont donc nécessaires un compte Windows Azure avec le service Windows Azure HDInsight activé. Sur cette base, un compte de stockage et un cluster HDInsight monté sont nécessaires. Vous pouvez vous reporter pour cela à la procédure complète décrite dans un précédent billet sur ce même blog :
- Pour ce qui est du compte de stockage, lorsque vous créez un nouveau cluster il vous est demandé d’en spécifier un. Nous utiliserons ce dernier pour stockez le résultat de sortie de l’application WordCount. Nous vous laissons le soin de créer un conteneur vide avec le nom « stockageazure » sur ce compte de stockage. Vous devez ensuite un dossier dans ce conteneur avec le nom « dataexplorer ». De telle sorte, nous aurons le chemin d’accès suivant : asv://stockageazure/dataexplorer/ . Si besoin, vous trouverez sur ce lien la marche à suivre pour créer un dossier sur Windows Azure.
- Vis-à-vis du cluster HDInsight, nous avons choisis le nom de « dataexplorertest.cloudapp.net». Comme souligné ci-avant, le programme WordCount fait partie de la galerie des exemples proposés par la plateforme HDInsight.
Vous avez bien évidemment besoin de Microsoft Excel 2013 avec l’extension Data Explorer téléchargeable ici installée.
Etape 1 : Traitement Hadoop
Rendez-vous sur l’interface d’administration de votre cluster Windows Azure HDInsight. Nous allons lancer le programme exemple WordCount proposé avec tout cluster HDInsight. Il est déjà préconfiguré et possède un jeu de données provenant du site gutenberg.org.
Cliquez sur la tuile Samples :
Cliquez sur l’exemple intitulé WordCount.
Vous arrivez sur une description de l’exemple ainsi que les différentes marches à suivre pour l’exécuter. Cliquez sur Deploy to your cluster accessible dans la barre latérale de droite.
Ceci nous amène dans l’interface de lancement d’un nouveau job. Comme vous pouvez le constater, les champs ont été pré-remplis. Mais nous allons opérer quelques changements afin que le résultat soit enregistré non pas sur le système de fichier HDFS du cluster mais sur le compte de stockage Azure créé pour l’occasion. Le dossier dataexplorer sera utilisé.
A ce stade, vous devez avoir pour l’instant deux paramètres :
- Le premier spécifie la classe wordcount, qui sera lancée par Hadoop, contenant le code source du programme Map/Reduce.
- Le second en représente deux, l’entrée du job suivit de la sortie (avec un espace les séparant) :
/example/data/gutenberg/davinci.txt DaVinciAllTopWords
Créez-en trois paramètres pour un souci de lisibilité :
- wordcount ne change pas.
- /example/data/gutenberg/davinci.txt ne contient plus la deuxième partie.
- asv://stockageazure/dataexplorer/wordcount est le chemin du dossier de sortie sur notre compte de stockage Azure. Le moniker asv spécifie le système de fichiers utilisé : Azure Storage Vault.
Vérifiez la commande générée (« Final Command »), elle doit correspondre à :
Hadoop jar hadoop-examples-1.1.0-SNAPSHOT.jar wordcount example/data/gutenberg/davinci.txt asv://stockageazure/dataexplorer/wordcount
Exécutez le programme en cliquant sur le bouton bleu Execute job, en bas à droite de l’écran. Patientez jusqu’à la fin du traitement et l’affichage du message suivant :
Une fois le traitement Map/Reduce terminé, le résultat est stocké sur notre Blob Storage à l’adresse suivante :
asv://stockageazure/dataexplorer/wordcount/part-r-00000
Dans la pratique, le fichier part-r-00000 dans le dossier wordcount correspond au fichier résultant de l’exécution d’un job par Hadoop. Ce dernier suit la structure <mot> tabulation <nombre d’occurences>
En guise de vérification, vous pouvez explorer votre Blob Storage à l’aide d’un outil comme CloudXplorer (gratuit dans sa version 1). (Vous pouvez vous reporter au tutoriel ici pour son utilisation avec votre compte Azure.) L’outil apporte un explorateur Windows classique, et permet l’exécution de fonction de base comme le copier/coller, la suppression et la création de dossier ainsi que la lecture de fichiers - ce qui est intéressant pour analyser le fichier part-r-00000.
Etape 2 : Visualisation des données
La suite se déroule sur votre machine. Lancez Microsoft Excel 2013, vous devriez avoir un affichage similaire :
Vous constatez la présence d’un nouvel onglet DATA EXPLORER dans le Ruban Office. Le groupe de commandes Get External Data propose cinq sources de données possibles en termes d’origine :
- Online Search est un moteur de recherche intégré qui requête le site Wikipédia et propose les différentes pages liées à la recherche. Un simple survol des résultats affiche une prévisualisation des données que nous pouvons récupérer.
- From Web ouvre une fenêtre demandant une URL. Il est tout à fait possible de requêter une API Web ou bien de récupérer un tableau HTML qui se trouve sur une page web en particulier.
- From File propose la récupération de données provenant des fichiers de type Classeur Excel, csv, texte, XML ou bien d’un dossier complet de votre ordinateur.
- From Database propose la récupération de données provenant de bases de données relationnelles SQL. Beaucoup de bases sont prises en compte à l’image de SQL Server, Windows Azure SQL, Access, Oracle, MySQL, IBM DB2, PostgreSQL, Teradata, etc.
- From Other Sources est le dernier type de source, qui ajoute une grande flexibilité à l’outil. Les données peuvent provenir de listes SharePoint, de flux OData, de la place de marché Windows Azure DataMarket, d’un cluster Hadoop via son système de fichier HDFS - cette technologie utilise le service WebHDFS de Hadoop, d’un cluster hébergé sur Windows Azure HDInsight - via l’autre système de fichiers ASV supporté dans Windows Azure HDInsight Service, d’un compte Facebook, d’une requête personnalisée.
Pour ce tutoriel, nous utiliserons la source de données From Other Sources->From Windows Azure HDInsight.
(Pourquoi ne pas utiliser la source de données HDFS directement nous direz-vous ? Dans la pratique, le service WebHDFS, l‘interface REST du système de fichiers HDFS, est accessible sur le nœud master via le port 50070. Lorsque l’on navigue dans les différents dossiers et sous-dossiers de HDFS, nous naviguons en réalité sur les différents nœuds du cluster (rappel : le namenode contient l’adresse des datanodes sur lequel est stocké tel ou tel fichier). Ceci étant, un problème apparait alors : un seul point de terminaison peut être associé à un port dans un Service Cloud sur Windows Azure. En conséquence, seul le master est accessible depuis l’extérieur, sans possibilité de naviguer dans les dossiers HDFS ; d’où l’utilisation (par défaut) avec le système de fichier ASV de Windows Azure HDInsight.)
Cliquez sur From Windows Azure.
Un dialogue s’affiche vous demandant de préciser le nom du compte de stockage Azure que vous souhaitez explorer.
Pour notre illustration, nous utilisons le compte « dataexplorerstockage » mentionné dans notre cahier des charges. La clé associée est requise à l’étape suivante pour l’authentification :
Cliquez sur Save. Un dialogue New Query s’ouvre. Sélectionnez dans la barre latérale gauche votre conteneur stockageazure pour afficher ce qu’il contient :
Cliquez ensuite sur le lien Binary de la ligne correspondante au fichier part-r-00000.
Le résultat brut du WordCount est affiché. Faites un clic-droit sur l’entête de colonne List puis sélectionnez la fonctionnalité To Table.
L’encadré jaune contient la requête que vous avez effectuée pour afficher le fichier part-r-00000. C’est un bon moyen d’apprendre le fonctionnement du langage DAX. Il y a aussi la documentation officielle ;)
Sur l’écran suivant, choisissez Tab dans la combo box Select or enter delimiter. Il précise que c’est une tabulation qui sépare nos colonnes dans le fichier part-r-00000. La fonction To Table crée un tableau de deux colonnes :
- Dans la première les mots,
- Dans la seconde les nombres d’occurrences.
Renommez la première colonne en « Mot » via un clic droit et Rename.
Renommez la deuxième colonne avec « Occurrence ».
Affichez les mots de la plus grande à la plus petite occurrence. Cliquez sur l’entête de colonne Occurence puis sélectionnez Sort Descending (pour une organisation décroissante) :
Sélectionnons le top 20. Cliquez sur l’icône grille dans le coin haut-gauche, près des entêtes. Puis, choisissez Keep Top Rows (garder un nombre de lignes précis) :
Spécifiez 20 comme 20, plus validez en cliquant sur Apply.
Vous pouvez validez le traitement final en cliquant sur Done (entouré en bleu). Vous pouvez aussi examiner l’enchainement des requêtes que nous avons exécutées pour obtenir le résultat dans le panneau latéral droit Steps (il est rétracté par défaut) :
Nous avons récupéré notre top 20 des mots les plus utilisés dans les livres provenant de gutenberg.org. Maintenant, place à la mise en forme. Nous allons créer un graphique. Microsoft Excel 2013 possède une fonctionnalité qui suggère des types de graphes en fonction des données qui lui sont fournies.
Cliquez sur INSERT puis sur Recommanded Charts.
La fenêtre suivante s’ouvre.
Choisissez un graphique et cliquez sur OK. Le résultat final de notre analyse donne le graphique suivant :
Nous en avons fini avec ce rapide complément à l’introduction proposée par Jean-Pierre ici sur Data Explorer. Bien-sûr, il est possible de réaliser des graphiques plus poussés et de croiser nos résultats Hadoop avec d’autres sources de données. La limite de cet outil est celle de votre imagination. A ce propos, vous pouvez visualiser ici une vidéo illustrant l’utilisation de DataExplorer pour la découverte et l’importation de données et leur formatage en visualisation 2D et 3D dans PowerView et « GeoFlow ».
Ceci conclut notre billet. Nous espérons vous avoir donné des idées quant à l’utilisation de Microsoft Excel 2013 dans le contexte de Hadoop et de Windows Azure HDInsight en particulier.