Hadoop / Big Data. Benjamin Renaut <renaut.benjamin@tokidev.fr> MBDS

Dimension: px
Commencer à balayer dès la page:

Download "Hadoop / Big Data. Benjamin Renaut <renaut.benjamin@tokidev.fr> MBDS 2014-2015"

Transcription

1 Hadoop / Big Data Benjamin Renaut <renaut.benjamin@tokidev.fr> MBDS

2 9 Apache Pig

3 Présentation 9-1 Pig est un autre outil associé à Hadoop au même titre que Sqoop. Son but est de permettre de développer facilement et rapidement des programmes map/reduce, sans avoir à développer en Java. Sa syntaxe se rapproche du langage SQL et il est notamment utile pour les programmeurs peu familiers avec Java ou qui souhaitent simplement expérimenter avec la méthodologie map/reduce ou Hadoop en général rapidement. A l'origine (2006) un projet développé en interne au département R&D de Yahoo, il est depuis 2007 un projet de la fondation Apache. Le langage de programmation de Pig est appelé Pig Latin.

4 Utilisation 9-2 Pig fonctionne comme un interpréteur de scripts exactement comme Python. Il suffit d'écrire un script Pig, de l'exécuter avec l'interpréteur (le programme en ligne de commande pig), et il exécutera le script dans l'environnement Hadoop. Pour exécuter un script Pig Latin sur Hadoop, on utilisera la commande: pig -x mapreduce fichier.pig Il est également possible de l'exécuter en mode local. Dans ce mode, Pig ignore complètement Hadoop et HDFS: il chargera ses fichiers depuis le disque local, et stockera ses résultats au même endroit. Pour ce faire, on utilise la commande: pig -x local fichier.pig

5 Utilisation 9-3 Enfin et toujours comme Python il peut également s'utiliser en mode interactif, où on tape ses instructions Pig Latin dans une invite de commande. Pour ce faire, il suffit de le lancer avec la commande: pig Dans ce mode, il détectera automatiquement si oui ou non Hadoop est présent et se placera dans le mode d'exécution qui correspond (on peut également forcer le mode à utiliser, toujours avec l'option -x). Par exemple: pig -x local ou encore: pig -x mapreduce

6 Fonctionnement 9-4 Pig constitue une couche d'abstraction au dessus de Hadoop. Un script écrit en Pig Latin est converti en une ou plusieurs tâches map/reduce exécutées sur Hadoop. Tout programme Pig est constitué a minima des étapes suivantes: Chargement des données (LOAD). Transformations/traitements sur les données. Sauvegarde des résultats (DUMP/STORE). Ces trois étapes sont toutes parallélisées par le biais de tâches map/reduce.

7 Syntaxe (issue de SQL) 9-5 Chaque ligne d'un script PIG doit être terminée par un point-virgule ';'. Il est possible de commenter le code avec la syntaxe multi-lignes: /* Ceci est un commentaire sur plusieurs lignes. */ (issue du C) ou avec la syntaxe sur une ligne: LOAD Ceci est un commentaire sur une ligne.

8 Types 9-6 Pig supporte les types de données usuels suivants: int un entier sur 32 bits. long un entier sur 64 bits. float un flottant sur 32 bits. double un flottant sur 64 bits. chararray une chaîne de caractères UTF-8. bytearray une chaîne binaire. boolean un booléen (true/false).

9 Types 9-7 Pig supporte également les trois types complexes suivants: tuple: une série de données. Par exemple: (12, John, 5.3) bag: un ensemble de tuples. Par exemple: {(12, John, 5.3), (8), (3.5, TRUE, Bob, 42)} map: une série de couples (clef;valeur). Par exemple: [qui#22, le#3] (ici avec deux couples clef;valeur) Au sein d'un type map, chaque clef doit être unique.

10 Types 9-8 Un tuple peut tout à fait contenir d'autres tuples, ou encore des bags, ou autres types simples et complexes. Par exemple: ({(1, 2), (3, John)}, 3, [qui#23]) Ce tuple contient trois membres: Un bag contenant lui-même trois tuples. Un entier de valeur 3. Un map contenant un seul couple (clef;valeur).

11 Chargement des données où source est le nom du/des fichier(s) ou répertoire(s), fonction le nom d'une fonction d'importation, et schemas un descriptif du format des données importées. 9-9 Les données d'entrée d'un programme pig seront typiquement chargées au sein d'un bag. Pour charger des données depuis le système de fichier (HDFS en mode mapreduce ou système de fichiers local en mode local), on utilise la commande LOAD. Synopsis: LOAD 'source' [USING fonction] [AS schemas]

12 Chargement des données 9-10 Les paramètres fonction et schemas sont optionnels. Le paramètre source peut être: Un fichier unique, par exemple «poeme.txt». Un répertoire (chargera tous les fichiers du répertoire), par exemple «data_input». Une expression complexe au même format que celles comprises par Hadoop/HDFS, par exemple: «data_input/input-1-*»

13 Chargement des données 9-11 C'est le paramètre fonction qui permet d'indiquer la manière de charger/segmenter les données d'une manière cohérente. Le paramètre désigne une classe Java en charge d'interpréter les données depuis le système de fichier et d'en sortir des types Pig cohérents (tuples / bag / map). Pig offre une série de fonctions déjà disponibles pour simplifier la vie du programmeur. La plus couramment utilisée est la fonction PigStorage. Sa syntaxe: PigStorage("SEPARATEUR")

14 Chargement des données - PigStorage 9-12 PigStorage va charger les données textuelles d'entrée sous la forme d'un bag de tuples: un pour chaque ligne des données. Le séparateur indique, pour chaque ligne, le caractère unique de séparation entre les différents champs des membre de chaque tuple. Imaginons qu'on ait le fichier d'entrée «etudiants.txt» suivant: ADAM Guillaume 15 BERCHANE Rachid 18 BOULLAIRE Alexandre 16 BOYER Raphael 17 CHAMPOUSSIN Luca 14 CODA Stephen 15

15 Chargement des données - PigStorage 9-13 Si on exécute la ligne: A = LOAD 'etudiants.txt' USING PigStorage(' '); alors A contiendra le bag de tuples suivant: (ADAM,Guillaume,15) (BERCHANE,Rachid,18) (BOULLAIRE,Alexandre,16) (BOYER,Raphael,17) (CHAMPOUSSIN,Luca,14) (CODA,Stephen,15) (avec trois champs texte, texte et entier par tuple)

16 Chargement des données - PigStorage 9-14 Si en revanche, on utilise: A = LOAD 'etudiants.txt' USING PigStorage(','); alors A contiendra le bag de tuples suivant: ("ADAM Guillaume 15") ("BERCHANE Rachid 18") ("BOULLAIRE Alexandre 16") ("BOYER Raphael 17") ("CHAMPOUSSIN Luca 14") ("CODA Stephen 15") (avec un seul et unique champs texte par tuple)

17 Chargement des données - PigStorage 9-15 La fonction de chargement PigStorage permet ainsi facilement de charger un fichier textuel avec des délimiteurs. Comme indiqué précédemment, le paramètre fonction est optionnel. Si on n'indique pas de fonction, alors la fonction utilisée est PigStorage, avec un séparateur correspondant à une tabulation. Ainsi, imaginons que notre fichier d'entrée «etudiants.txt» ait le format suivant: ADAM[TAB]Guillaume[TAB]15 BERCHANE[TAB]Rachid[TAB]18 (où [TAB] dénote une BOULLAIRE[TAB]Alexandre[TAB]16 tabulation) BOYER[TAB]Raphael[TAB]17 CHAMPOUSSIN[TAB]Luca[TAB]14 CODA[TAB]Stephen[TAB]15

18 Chargement des données - PigStorage 9-16 Si on exécute: A = LOAD 'etudiants.txt'; alors A contiendra le bag de tuples suivant: (ADAM,Guillaume,15) (BERCHANE,Rachid,18) (BOULLAIRE,Alexandre,16) (BOYER,Raphael,17) (CHAMPOUSSIN,Luca,14) (CODA,Stephen,15) (avec trois champs texte, texte et entier par tuple)

19 Chargement des données 9-17 Il existe d'autres fonctions «standard» de chargement mises à disposition par Pig, parmi lesquelles: TextLoader: aucun paramètre, charge simplement chaque ligne de texte comme un tuple avec un seul champs la ligne elle-même. JsonLoader: permet de charger un fichier JSON de manière structurée. Un argument, indiquant le format du JSON à charger. AvroLoader: permet de charger un fichier binaire AVRO un des formats supportés par Sqoop! Un argument également. et d'autres Il est également possible de développer sa propre fonction de chargement (sous la forme d'une classe Java compilée en.jar).

20 Chargement des données - Schémas 9-18 Par défaut, une fois le bag des données d'entrée chargé, on pourra se référer à différents membres de chaque tuple en utilisant la syntaxe: $0, $1, $2, etc. pour référencer le premier, second, troisième, etc. membre de chaque tuple. Par exemple, si on a chargé les données suivantes dans A: (ADAM,Guillaume,15) (BERCHANE,Rachid,18) (BOULLAIRE,Alexandre,16) alors l'expression «A.$2» designera la note (15, 18, ); de même, l'expression «A.$0» désignera le nom de famille (ADAM, ).

21 Chargement des données - Schémas 9-19 Le troisième argument optionnel de LOAD, schemas, permet de: Donner un nom aux champs des tuples chargés. Leur attribuer un type de données explicite. Spécifier un type de chargement différent (autre qu'un simple bag de tuples). La syntaxe: (NOM1:TYPE1, NOM2:TYPE2,NOM3:TYPE3 ) Le type est optionnel.

22 Chargement des données - Schémas 9-20 Par exemple, avec les données d'entrée «in.txt»: Si on fait: ADAM Guillaume 15 BERCHANE Rachid 18 BOULLAIRE Alexandre 16 BOYER Raphael 17 CHAMPOUSSIN Luca 14 CODA Stephen 15 A = LOAD 'in.txt' USING PigStorage(' ') AS (nom, prenom, note); Alors on pourra se référer par exemple à la note plus loin par le biais de la syntaxe «A.note».

23 Chargement des données - Schémas 9-21 On pourrait également forcer le type de la note par le biais de: A = LOAD 'in.txt' USING PigStorage(' ') AS (nom, prenom, note:float); et si on exécute par exemple: A = LOAD 'in.txt' USING PigStorage(' ') AS (nom, prenom:int, note:float); alors le champs «prenom» de notre fichier d'entrée ne sera pas chargé (valeur vide), puisque Pig tente de l'interpréter comme un type int et qu'il s'agit d'une chaîne de caractères dans les données d'entrée.

24 Chargement des données - Schémas 9-22 Un exemple plus complexe. Données d'entrée «in.txt»: (ADAM,Guillaume) (15,15,12) (BERCHANE,Rachid) (18,15,20) (BOULLAIRE,Alexandre) (16,11,18) Si on fait: A = LOAD 'in.txt' Using PigStorage(' ') AS \ (infos:tuple(nom,prenom),notes:tuple(n1,n2,n3)); Alors les données obtenues auront la forme: ((ADAM,Guillaume),(15,15,12)) ((BERCHANE,Rachid),(18,15,20)) ((BOULLAIRE,Alexandre),(16,11,18))

25 Chargement des données - Schémas 9-23 Dans l'exemple précédent, en délimitant au sein du fichier source les données sous la forme de deux champs «tuples», on a pu indiquer à PigStorage lors du chargement qu'on souhaitait qu'ils soient chargés sous cette forme. On pourra alors se référer par exemple à «A.infos.prenom», ou encore «A.notes.n1», etc. Il faut évidemment que la fonction de chargement supporte ce type de schémas plus complexes. Il est recommander de toujours explicitement définir un schéma de chargement avec tous les types et noms définis; ceci d'une part pour la lisibilité, d'autre part pour assurer la cohérence dans le type des données d'entrée.

26 Commande DESCRIBE 9-24 On peut à tout moment obtenir (au sein du shell interactif) une description de la composition d'un container par le biais de la commande describe. Par exemple: A = LOAD 'in.txt' Using PigStorage(' ') AS \ (infos:tuple(nom,prenom),notes:tuple(n1,n2,n3)); DESCRIBE A; Donnera à l'écran: A: {infos: (nom: bytearray,prenom: bytearray),notes: (n1: bytearray,n2: bytearray,n3: bytearray)} c'est notamment utile lors de la rédaction/test d'un programme Pig.

27 Sauvegarde de données DUMP 9-25 Deux commandes principales existent pour extraire des données depuis Pig. La première est la commande DUMP. Syntaxe: DUMP <nom du container>; Par exemple: DUMP A; Elle ne sauvegarde pas les données sur le système de fichier mais se contente de les afficher à l'écran. Elle est utile lors de l'utilisation de Pig en mode interactif. Les sorties affichées plus haut (résultats de LOAD) au sein de ce cours sont directement issues de la commande DUMP.

28 Sauvegarde de données STORE 9-26 La seconde est la commande STORE, qui sauve véritablement des données au sein du système de fichier (HDFS ou local selon le mode). Sa syntaxe: STORE alias INTO 'repertoire' [USING fonction]; alias représente le container à sauvegarder (par exemple «A»). Comme les données sont issues d'une tâche map/reduce, elles seront stockées sous la forme de plusieurs fichiers «part-r-*». En conséquence, repertoire indique le répertoire dans lequel on souhaite que la série de fichiers résultants de la tâche/du stockage soient écrits.

29 Sauvegarde de données STORE 9-27 Là aussi, on peut spécifier une fonction indiquant la manière de formater les données. Les mêmes fonctions que celles vu précédemment sont utilisables (PigStorage, JsonStorage, AvroStorage mais pas par exemple TextLoader). fonction est ici aussi optionnel; là aussi, si on ne précise pas de fonction, c'est PigStorage('\t') qui est utilisée. STORE ne supporte pas de schéma; à la place, si un schéma est nécessaire (par exemple pour du json), c'est généralement le paramètre de la fonction de stockage qui est utilisé. Dans le cas du JSON, par défaut, Pig utilisera les noms de colonnes directement issues du schéma de l'alias concerné; il stocke par ailleurs le schéma sous la forme d'un fichier.pig_schema dans le répertoire. Si on recharge les données avec un JsonStorage, le schéma sera automatiquement importé par la fonction.

30 Sauvegarde de données Exemples 9-28 Fichier d'entrée «in.txt»: ADAM Guillaume 15 BERCHANE Rachid 18 BOULLAIRE Alexandre 16 BOYER Raphael 17 Chargé dans l'alias A avec: A = LOAD 'in.txt' USING PigStorage(' ') \ AS (nom:chararray, prenom:chararray, note:float); Sortie de: (ADAM,Guillaume,15) DUMP A; (BERCHANE,Rachid,18) (BOULLAIRE,Alexandre,16) (BOYER,Raphael,17) DESCRIBE A; A: {nom:chararray, prenom:chararray,note:float}

31 Sauvegarde de données Exemples 9-29 Si on utilise: STORE A INTO 'results' USING PigStorage(','); Un répertoire «results/» sera créé, contenant ici un fichier unique part-r avec pour contenu: ADAM,Guillaume,15 BERCHANE,Rachid,18 BOULLAIRE,Alexandre,16 BOYER,Raphael,17 Si les données avaient été plus conséquentes, on aurait pu avoir de nombreux fichiers part-r-00000, part-r-00001, etc.

32 Sauvegarde de données Exemples 9-30 Si on utilise: STORE A INTO 'results' USING JsonStorage(); Un répertoire «results/» sera créé, contenant ici un fichier unique part-r avec pour contenu: {"nom":"adam","prenom":"guillaume","note":15.0} {"nom":"berchane","prenom":"rachid","note":18.0} {"nom":"boullaire","prenom":"alexandre","note":16.0} {"nom":"boyer","prenom":"raphael","note":17.0} Par ailleurs, Pig a également créé un fichier.pig_schema; si on recharge plus tard les données avec JsonLoader (le pendant «chargement» de JsonStorage), le schéma sera automatiquement déduit.

33 Autres commandes utiles cat 9-31 Le shell interactif de Pig offre quelques commandes pratiques pour le développeur. L'une de ces commandes est cat: comme la commande «cat» Unix, elle affiche le contenu d'un fichier. En revanche, dans le cadre de Pig, elle est étendue au fonctionnement Hadoop; si on fait: cat [REPERTOIRE] la commande affichera automatiquement le contenu concaténé de tous les fichiers du répertoire (utile pour vérifier un ensemble de données d'entrée/de sortie).

34 Autres commandes utiles 9-32 Autres commandes uniquement disponibles en mode interactif: help: affiche une aide. sh [COMMANDE]: exécute une commande shell. exec [FICHIER.PIG]: exécute le script pig indiqué. history: affiche un historique de toutes les commandes utilisées. ls, mkdir, rm, etc. : équivalentes à leur pendant Unix. et d'autres (consulter la documentation).

35 Traitement des données 9-33 On a vu jusqu'ici comment charger des données depuis le système de fichiers local/hdfs au sein d'un alias Pig, et comment sauvegarder un alias au sein du système de fichier ou simplement l'afficher à l'écran en mode interfactif (DUMP). On va maintenant voir comment manipuler les données, c'est à dire effectuer un traitement sur nos données d'entrée. Toutes les fonctions et opérateurs de Pig ne sont pas décrites ici; seule une sélection large mais non exhaustive est décrite; se référer à la documentation de Pig pour plus d'informations.

36 Opérateur FILTER 9-34 L'opérateur FILTER permet de filtrer les éléments d'un alias selon une ou plusieurs conditions. Syntaxe: DEST = FILTER SOURCE BY EXPRESSION; Il s'agit grosso modo d'un équivalent au WHERE de SQL. On pourra ainsi faire par exemple: B = FILTER A BY note > 10; Ou encore: B = FILTER A BY note > 10 AND ((annee_naissance+age)<2014);

37 Opérateur ORDER 9-35 L'opérateur ORDER permet de trier les éléments selon une condition. C'est l'équivalent du ORDER BY de SQL. Syntaxe: DEST = ORDER SOURCE BY FIELD [ASC DESC]; On pourra ainsi faire par exemple: B = ORDER A BY note DESC; Ou encore: B = ORDER A BY note DESC, nom ASC;

38 Opérateur GROUP 9-36 L'opérateur GROUP permet de grouper les tuples selon un champs. Il génère des tuples constitués de deux champs: Le premier, nommé «group», est un champs simple, contenant la valeur unique du champs utilisé lors de l'appel à GROUP. Le second, qui porte le nom de l'alias sur lequel a été appliqué GROUP, est un bag qui contient une série de tuples: tous ceux pour lesquels la valeur en question a été rencontrée. Syntaxe: DEST = GROUP SOURCE BY FIELD;

39 Opérateur GROUP 9-37 Par exemple: ADAM,Guillaume,15 BERCHANE,Rachid,15 BOULLAIRE,Alexandre,16 DUMP A; (ADAM,Guillaume,15) (BERCHANE,Rachid,15) (BOULLAIRE,Alexandre,16) On exécute: B = GROUP A BY note; Et on obtient: DUMP B; (15,{(BERCHANE,Rachid,15),(ADAM,Guillaume,15)}) (16,{(BOULLAIRE,Alexandre,16)}) DESCRIBE B ; B: {group:float,a:{(nom:chararray,prenom:chararray,note:float)}}

40 Opérateur FOREACH GENERATE 9-38 L'opérateur FOREACH GENERATE permet d'itérer chacun des tuples du bag de l'alias concerné, et de générer d'autres tuples pour chacun d'entre eux. Syntaxe: DEST = FOREACH SOURCE GENERATE EXPRESSION; Au sein de l'expression, on peut générer des bags, des tuples, des maps, etc. et appeler des fonctions à la volée. On peut également nommer des champs générés de cette manière au sein de l'appel à GENERATE.

41 Opérateur FOREACH GENERATE 9-39 Par exemple: ADAM,Guillaume,15 BERCHANE,Rachid,15 BOULLAIRE,Alexandre,16 DUMP A; (ADAM,Guillaume,15) (BERCHANE,Rachid,15) (BOULLAIRE,Alexandre,16) On exécute: B = FOREACH A GENERATE note; Et on obtient: DUMP B; (15) (15) (16) DESCRIBE B; B: {note: float}

42 Opérateur FOREACH GENERATE 9-40 Par exemple: ADAM,Guillaume,15 BERCHANE,Rachid,15 BOULLAIRE,Alexandre,16 DUMP A; (ADAM,Guillaume,15) (BERCHANE,Rachid,15) (BOULLAIRE,Alexandre,16) On exécute: B = FOREACH A GENERATE (nom,prenom) AS infos, note; Et on obtient: DUMP B; ((ADAM,Guillaume),15.0) ((BERCHANE,Rachid),15.0) ((BOULLAIRE,Alexandre),16.0) DESCRIBE B; B: {infos: (nom: chararray,prenom: chararray),note: float}

43 Opérateur FOREACH GENERATE 9-40 Il est également possible d'imbriquer des traitement plus complexe au sein de cet opérateur, par exemple pour effectuer des traitements sur les tuples d'un bag. La syntaxe: DEST = FOREACH SOURCE { OPERATION_1; OPERATION_2; etc }; Imaginons par exemple qu'on ait des données sous la forme: A: {infos: (nom: bytearray,prenom: bytearray), \ notes: (n1: bytearray,n2: bytearray,n3: bytearray)}

44 Opérateur FOREACH GENERATE 9-40 on pourrait alors faire: B = FOREACH A { C = (notes.n1+notes.n2+notes.n3)/3.0; GENERATE infos,c as moyenne; }; Pour générer la moyenne des notes tout en conservant les noms & prénoms des élèves contenus dans l'alias A.

45 Opérateur FLATTEN 9-41 L'opérateur FLATTEN permet de «déplier» un ensemble tuples et bags pour les transformer en de simples tuples. Par exemple, si on a une liste de tuples dans un alias B au format suivant: (15,{(BERCHANE,Rachid,15),(ADAM,Guillaume,15)}) (16,{(BOULLAIRE,Alexandre,16)}) B: {group:float,a:{(nom:chararray,prenom:chararray,note:float)}} Et qu'on exécute: C = FOREACH B GENERATE FLATTEN(A);

46 Opérateur FLATTEN 9-42 on obtiendra: (BERCHANE,Rachid,15.0) (ADAM,Guillaume,15.0) (BOULLAIRE,Alexandre,16.0)

47 Autres opérateurs 9-43 Il existe divers autres opérateurs utiles dans Pig: LIMIT: récupérer les N premiers tuples d'un alias. SPLIT: générer plusieurs alias à partir d'un alias; selon des expressions conditionnelles. CROSS: mélanger les tuples de deux alias. DISTINCT: éliminer les tuples identiques au sein d'un alias. SAMPLE: obtenir une sous-sélection aléatoire de tuples depuis un alias (par exemple, récupérer 10% des tuples d'un alias de manière aléatoire). et d'autres (se référer à la documentation officielle de Pig pour plus d'informations).

48 Fonctions Chaînes de caractères 9-44 Pig propose, en standard, de nombreuses fonctions pour la manipulation des types chaîne de caractère. Quelques exemples: TOKENIZE: découpe les différents mots d'une ligne. Génère un bag contenant un tuple pour chacun des mots. Par exemple, A: ("exemple de phrase") ("autre exemple") B = FOREACH A GENERATE TOKENIZE($0); DUMP B: ({("exemple"), ("de"), ("phrase")}) ({("autre"),("exemple")})

49 Fonctions Chaînes de caractères 9-45 SIZE: renvoie la taille d'une chaîne de caractères. SUBSTRING: permet de récupérer une sous-chaîne de caractères. STRSPLIT: permet de découper une chaîne de caractères à partir d'une expression régulière. LOWER: converti une chaîne en minuscules. REPLACE: remplacement dans une chaîne (supporte là aussi les regexp). et d'autres (là aussi, consulter la documentation).

50 Fonctions Mathématiques 9-46 De même, Pig propose un certain nombre de fonction pour la manipulation des nombres. Quelques exemples: ABS: renvoie la valeur absolue d'un nombre. COS/SIN/TAN: cosinus/sinus/tangente. RANDOM: génère un flottant aléatoire entre 0 et 1. ROUND: génère l'arrondi d'un nombre. et d'autres (même remarque).

51 Fonctions Autres 9-47 Pig propose enfin quelques autres fonctions utiles: COUNT(bag): renvoie le nombre de tuples contenus au sein d'un bag. CONCAT(f1, f2, f3, ): concatène une série de champs d'un tuple. Supporte la concaténation des nombres (leur représentation textuelle). SUBSTRACT(b1, b2): renvoie un bag constitué des éléments présents dans le bag b1 mais absents du bag b2. SUM(bag): renvoie la somme des éléments numériques contenus au sein d'un bag. et d'autres (même remarques).

52 Exemple Compteur de mots, version Pig 9-48 On reprend l'exemple précédent du compteur d'occurences de mots. Les données d'entrée, au sein d'un fichier poeme.txt: Celui qui croyait au ciel Celui qui ny croyait pas Tous deux adoraient la belle Prisonniere des soldats On commence par charger les données: A = LOAD 'poeme.txt' USING TextLoader AS ligne:chararray;

53 Exemple Compteur de mots, version Pig 9-49 Aprés chargement: DUMP A: (Celui qui croyait au ciel) (Celui qui ny croyait pas) (Tous deux adoraient la belle) (Prisonniere des soldats) DESCRIBE A: A: {ligne: chararray}

54 Exemple Compteur de mots, version Pig 9-50 On exécute ensuite: B = FOREACH A GENERATE TOKENIZE(LOWER(ligne)) AS mots; ce qui aura pour effet, pour chaque ligne, de la convertir en minuscules, puis de générer un bag de tuples: un pour chacun des mots de la ligne en minuscules (fonction TOKENIZE). On donne également un nom au bag en question: «mots».

55 Exemple Compteur de mots, version Pig 9-51 Aprés exécution: DUMP B: ({(celui),(qui),(croyait),(au),(ciel)}) ({(celui),(qui),(ny),(croyait),(pas)}) ({(tous),(deux),(adoraient),(la),(belle)}) ({(prisonniere),(des),(soldats)}) DESCRIBE B: B: {mots: {tuple_of_tokens: (token: chararray)}}

56 Exemple Compteur de mots, version Pig 9-52 On exécute ensuite: C = FOREACH B GENERATE FLATTEN(mots) AS mot; ce qui aura pour effet, pour chaque tuple, de «déplier» le bag contenant chacun des mots et de générer pour chacun des tuples contenu dans ce bag un tuple indépendant. On donne également un nom à ces tuples désormais indépendants: «mot».

57 Exemple Compteur de mots, version Pig 9-53 Aprés exécution: DUMP C: (celui) (qui) (croyait) (au) (ciel) (celui) (qui) (ny) (croyait) (pas) (tous)... DESCRIBE C: C: {mot: chararray}

58 Exemple Compteur de mots, version Pig 9-54 On exécute ensuite: D = GROUP C BY mot; ce qui aura pour effet de regrouper les tuples par mot commun. On rappelle que l'opérateur GROUP va générer un tuple constitué d'un premier membre «group» qui contient le mot unique en question, et d'un second membre «C» de type bag qui contient tous les tuples correspondant à cette valeur.

59 Exemple Compteur de mots, version Pig 9-55 Aprés exécution: DUMP D: DESCRIBE D: (au,{(au)}) (la,{(la)}) (ny,{(ny)}) (qui,{(qui),(qui)}) (tous,{(tous)}) (belle,{(belle)}) (celui,{(celui),(celui)}) (croyait,{(croyait),(croyait)})... D: {group: chararray,c: {(mot: chararray)}}

60 Exemple Compteur de mots, version Pig 9-56 On exécute enfin: E = FOREACH D GENERATE group AS mot, COUNT(C) as occurrences; ce qui aura pour effet de parcourir l'alias D et, pour chaque tuple, de récupérer le premier membre «group» et le nombre de tuples du second membre de type bag «C». On génère un nouveau tuple à partir de ces deux informations: on donne au premier champs le nom «mot», et au second le nom «occurences».

61 Exemple Compteur de mots, version Pig 9-57 Aprés exécution: DUMP E: DESCRIBE D: (au,1) (la,1) (qui,2) (belle,1) (celui,2) (croyait,2) (soldats,1) (prisonniere,1)... E: {mot: chararray,occurrences: long}

62 Exemple Compteur de mots, version Pig 9-58 Il reste enfin à sauvegarder les données: STORE E INTO '/results'; Puisqu'on ne précise pas de fonction de stockage, Pig utilisera par défaut PigStorage('\'): il devrait écrire chacun des tuple sur une ligne textuelle, en séparant chacun des champs par une tabulation. La méthode générera un répertoire /results (sur HDFS ou le système de fichiers local), qui contiendra une série de fichier part-r-xxxxx, contenant les différents tuples de E.

63 Exemple Compteur de mots, version Pig 9-59 Contenu du fichier /results/part-r-00000: au 1 la 1 ny 1 des 1 pas 1 qui 2 ciel 1 deux 1 tous 1 belle 1 celui 2 croyait 2 soldats 1 adoraient 1 prisonniere 1

64 Etendre Pig 9-60 On l'a vu, Pig propose de nombreuses fonctions en standard. En revanche, dans beaucoup de cas complexes, on a besoin d'effectuer des traitements qui sont impossible avec les seules fonctions standard de Pig. Pour pallier à ce manque, Pig implémente le concept de User Defined Functions. Il s'agit d'un mécanisme permettant d'étendre Pig. Le fonctionnement est simple: il suffit de développer la fonction dont on a besoin en Java (en implémentant certaines interfaces Pig), et une fois compilées, elles deviennent disponibles au sein de tout programme Pig chargeant le.jar correspondant. Il est également possible de développer ces fonctions en Python / autres langages (par un mécanisme similaire à Streaming pour Hadoop).

65 User Defined Functions 9-61 Pour charger un.jar additionnel depuis un programme Pig, on utilise la commande REGISTER. Par exemple: REGISTER udf.jar; (sans guillemets autour du nom du.jar) On peut ensuite simplement invoquer la fonction à partir de son classpath directement depuis le langage Pig Latin. Par exemple: B = FOREACH A GENERATE org.mbds.udf.uppercase(nom); (en supposant qu'une classe org.mbds.udf.uppercase existe au sein du fichier udf.jar d'exemple)

66 User Defined Functions - Exemple 9-62 Un exemple: on ne peut pas sans fonction additionnelle implémenter un programme Pig pour résoudre le problème des anagrammes vu précédemment. En effet, il n'y a pas de moyen depuis les fonctions standard Pig de générer la clef (les lettres du mot, classées par ordre alphabétique). En conséquence, on imagine qu'on va rédiger une fonction Pig additionnelle pour implémenter cette opération: elle prendra en entrée une chaîne de caractères, et fournira en sortie la même chaîne avec les lettres ordonnées alphabétiquement. On décide d'appeler cette classe SortLetters au sein d'un package: org.mbds.hadoop.pigudfs

67 User Defined Functions - Exemple 9-63

68 User Defined Functions - Exemple 9-64 Une fois ce code compilé dans un.jar, par exemple un fichier mbds_udfs.jar, on pourra faire au sein de tout programme Pig: REGISTER mbds_udfs.jar; Et si on utilise: org.mbds.hadoop.pigudfs.sortletter(field) alors on recevra en valeur de retour la valeur de la chaîne field, avec les lettres triées alphabétiquement.

69 Conclusion 9-65 On a vu que Pig constituait un outil puissant et accessible pour la rédaction et l'exécution de programmes map/reduce via Hadoop. Il est par ailleurs infiniment extensible via le mécanisme des User Defined Functions. Si beaucoup d'opérateurs et de fonctions «standards» de Pig ont été abordés, il y en a beaucoup d'autres: pour approfondir le sujet, se référer à la documentation officielle de Pig (+ guide de lectures additionnelles du cours).

Programmation parallèle et distribuée (Master 1 Info 2015-2016)

Programmation parallèle et distribuée (Master 1 Info 2015-2016) Programmation parallèle et distribuée (Master 1 Info 2015-2016) Hadoop MapReduce et HDFS Note bibliographique : ce cours est largement inspiré par le cours de Benjamin Renaut (Tokidev SAS) Introduction

Plus en détail

Hadoop / Big Data. Benjamin Renaut <renaut.benjamin@tokidev.fr> MBDS 2014-2015

Hadoop / Big Data. Benjamin Renaut <renaut.benjamin@tokidev.fr> MBDS 2014-2015 Hadoop / Big Data Benjamin Renaut MBDS 2014-2015 TP 1 Méthodologie Map/Reduce - programmation Hadoop. 1 Installer VirtualBox (https://www.virtualbox.org/). Importer la machine

Plus en détail

Hadoop / Big Data. Benjamin Renaut <renaut.benjamin@tokidev.fr> MBDS 2014-2015

Hadoop / Big Data. Benjamin Renaut <renaut.benjamin@tokidev.fr> MBDS 2014-2015 Hadoop / Big Data Benjamin Renaut MBDS 2014-2015 TP 3 TP noté Méthodologie Map/Reduce - programmation Hadoop - Sqoop Préparation du TP 1 Importer la machine virtuelle.ova du

Plus en détail

TP 1. Prise en main du langage Python

TP 1. Prise en main du langage Python TP. Prise en main du langage Python Cette année nous travaillerons avec le langage Python version 3. ; nous utiliserons l environnement de développement IDLE. Étape 0. Dans votre espace personnel, créer

Plus en détail

Hadoop / Big Data. Benjamin Renaut <renaut.benjamin@tokidev.fr> MBDS 2014-2015

Hadoop / Big Data. Benjamin Renaut <renaut.benjamin@tokidev.fr> MBDS 2014-2015 Hadoop / Big Data Benjamin Renaut MBDS 2014-2015 6 map/reduce et Hadoop: exemples plus avancés Exemple: parcours de graphe 6-1 On cherche à déterminer la profondeur maximale

Plus en détail

Formation Cloudera Data Analyst Utiliser Pig, Hive et Impala avec Hadoop

Formation Cloudera Data Analyst Utiliser Pig, Hive et Impala avec Hadoop Passez au niveau supérieur en termes de connaissance grâce à la formation Data Analyst de Cloudera. Public Durée Objectifs Analystes de données, business analysts, développeurs et administrateurs qui ont

Plus en détail

td3a correction session7az

td3a correction session7az td3a correction session7az August 19, 2015 1 Séance 7 : PIG et JSON et streaming avec les données vélib (correction avec Azure) Plan Récupération des données Connexion au cluster et import des données

Plus en détail

Initiation à la programmation en Python

Initiation à la programmation en Python I-Conventions Initiation à la programmation en Python Nom : Prénom : Une commande Python sera écrite en caractère gras. Exemples : print 'Bonjour' max=input("nombre maximum autorisé :") Le résultat de

Plus en détail

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux. UEO11 COURS/TD 1 Contenu du semestre Cours et TDs sont intégrés L objectif de ce cours équivalent a 6h de cours, 10h de TD et 8h de TP est le suivant : - initiation à l algorithmique - notions de bases

Plus en détail

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS Depuis SAS 9.2 TS2M3, SAS propose un nouveau langage de programmation permettant de créer et gérer des tables SAS : le DS2 («Data Step 2»). Ces nouveautés

Plus en détail

L informatique en BCPST

L informatique en BCPST L informatique en BCPST Présentation générale Sylvain Pelletier Septembre 2014 Sylvain Pelletier L informatique en BCPST Septembre 2014 1 / 20 Informatique, algorithmique, programmation Utiliser la rapidité

Plus en détail

Présentation du langage et premières fonctions

Présentation du langage et premières fonctions 1 Présentation de l interface logicielle Si les langages de haut niveau sont nombreux, nous allons travaillé cette année avec le langage Python, un langage de programmation très en vue sur internet en

Plus en détail

MapReduce. Malo Jaffré, Pablo Rauzy. 16 avril 2010 ENS. Malo Jaffré, Pablo Rauzy (ENS) MapReduce 16 avril 2010 1 / 15

MapReduce. Malo Jaffré, Pablo Rauzy. 16 avril 2010 ENS. Malo Jaffré, Pablo Rauzy (ENS) MapReduce 16 avril 2010 1 / 15 MapReduce Malo Jaffré, Pablo Rauzy ENS 16 avril 2010 Malo Jaffré, Pablo Rauzy (ENS) MapReduce 16 avril 2010 1 / 15 Qu est ce que c est? Conceptuellement Données MapReduce est un framework de calcul distribué

Plus en détail

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile Dans ce TP, vous apprendrez à définir le type abstrait Pile, à le programmer en Java à l aide d une interface

Plus en détail

Hadoop / Big Data 2014-2015 MBDS. Benjamin Renaut <renaut.benjamin@tokidev.fr>

Hadoop / Big Data 2014-2015 MBDS. Benjamin Renaut <renaut.benjamin@tokidev.fr> Hadoop / Big Data Benjamin Renaut MBDS 2014-2015 1 Introduction Programme Planning Objectifs TP/Évaluations Introduction 1-1 Benjamin Renaut Tokidev SAS - Bureau d'étude -

Plus en détail

I. Introduction aux fonctions : les fonctions standards

I. Introduction aux fonctions : les fonctions standards Chapitre 3 : Les fonctions en C++ I. Introduction aux fonctions : les fonctions standards A. Notion de Fonction Imaginons que dans un programme, vous ayez besoin de calculer une racine carrée. Rappelons

Plus en détail

MODE OPERATOIRE OPENOFFICE BASE

MODE OPERATOIRE OPENOFFICE BASE MODE OPERATOIRE OPENOFFICE BASE Openoffice Base est un SGBDR : Système de Gestion de Base de Données Relationnelle. L un des principaux atouts de ce logiciel est de pouvoir gérer de façon efficace et rapide

Plus en détail

Introduction à Hadoop & MapReduce

Introduction à Hadoop & MapReduce Introduction à Hadoop & MapReduce Cours 2 Benjamin Renaut MOOC / FUN 2014-2015 5 Hadoop: présentation Apache Hadoop 5-1 Projet Open Source fondation Apache. http://hadoop.apache.org/

Plus en détail

Hadoop / Big Data. Benjamin Renaut <renaut.benjamin@tokidev.fr> MBDS 2013-2014

Hadoop / Big Data. Benjamin Renaut <renaut.benjamin@tokidev.fr> MBDS 2013-2014 Hadoop / Big Data Benjamin Renaut MBDS 2013-2014 1 Introduction Programme Planning Objectifs TP/Évaluations Introduction 1-1 Benjamin Renaut Tokidev SAS - Bureau d'étude -

Plus en détail

Introduction à MapReduce/Hadoop et Spark

Introduction à MapReduce/Hadoop et Spark 1 / 36 Introduction à MapReduce/Hadoop et Spark Certificat Big Data Ludovic Denoyer et Sylvain Lamprier UPMC Plan 2 / 36 Contexte 3 / 36 Contexte 4 / 36 Data driven science: le 4e paradigme (Jim Gray -

Plus en détail

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES Dossier G11 - Interroger une base de données La base de données Facturation contient tout un ensemble d'informations concernant la facturation de la SAFPB (société anonyme de fabrication de produits de

Plus en détail

Chapitre 2 Devine mon nombre!

Chapitre 2 Devine mon nombre! Python 3 : objectif jeux Chapitre 2 Chapitre 2 Devine mon nombre! 2.1. Thèmes abordés dans ce chapitre commentaires modules externes, import variables boucle while condition : if... elif... else la fonction

Plus en détail

PROJET ALGORITHMIQUE ET PROGRAMMATION II

PROJET ALGORITHMIQUE ET PROGRAMMATION II PROJET 1 ALGORITHMIQUE ET PROGRAMMATION II CONTENU DU RAPPORT A RENDRE : o Fiche signalétique du binôme o Listing des différents fichiers sources o CD sources o Il sera tenu compte de la présentation du

Plus en détail

SHERLOCK 7. Version 1.2.0 du 01/09/09 JAVASCRIPT 1.5

SHERLOCK 7. Version 1.2.0 du 01/09/09 JAVASCRIPT 1.5 SHERLOCK 7 Version 1.2.0 du 01/09/09 JAVASCRIPT 1.5 Cette note montre comment intégrer un script Java dans une investigation Sherlock et les différents aspects de Java script. S T E M M E R I M A G I N

Plus en détail

Big Data. Cyril Amsellem Consultant avant-vente. 16 juin 2011. Talend 2010 1

Big Data. Cyril Amsellem Consultant avant-vente. 16 juin 2011. Talend 2010 1 Big Data Cyril Amsellem Consultant avant-vente 16 juin 2011 Talend 2010 1 Big Data Architecture globale Hadoop Les projets Hadoop (partie 1) Hadoop-Core : projet principal. HDFS : système de fichiers distribués

Plus en détail

TP : Shell Scripts. 1 Remarque générale. 2 Mise en jambe. 3 Avec des si. Systèmes et scripts

TP : Shell Scripts. 1 Remarque générale. 2 Mise en jambe. 3 Avec des si. Systèmes et scripts E3FI ESIEE Paris Systèmes et scripts B. Perret TP : Shell Scripts 1 Remarque générale Lorsque vous cherchez des informations sur Internet, n'oubliez pas que langage de shell script que nous avons vu correspond

Plus en détail

Mesurer les performances (CPU) sous Linux

Mesurer les performances (CPU) sous Linux Titre : Mesurer les performances (CPU) sous Linux Date : 22/07/2015 Page : 1/7 Mesurer les performances (CPU) sous Linux Résumé : Il existe des outils permettant de tracer les temps CPU utilisés (profiling).

Plus en détail

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013 NFA 008 Introduction à NoSQL et MongoDB 25/05/2013 1 NoSQL, c'est à dire? Les bases de données NoSQL restent des bases de données mais on met l'accent sur L'aspect NON-relationnel L'architecture distribuée

Plus en détail

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP COURS PROGRAMMATION INITIATION AU LANGAGE C SUR MICROCONTROLEUR PIC page 1 / 7 INITIATION AU LANGAGE C SUR PIC DE MICROSHIP I. Historique du langage C 1972 : naissance du C dans les laboratoires BELL par

Plus en détail

Introduction à MATLAB R

Introduction à MATLAB R Introduction à MATLAB R Romain Tavenard 10 septembre 2009 MATLAB R est un environnement de calcul numérique propriétaire orienté vers le calcul matriciel. Il se compose d un langage de programmation, d

Plus en détail

1. Qu'est-ce que SQL?... 2. 2. La maintenance des bases de données... 2. 3. Les manipulations des bases de données... 5

1. Qu'est-ce que SQL?... 2. 2. La maintenance des bases de données... 2. 3. Les manipulations des bases de données... 5 1. Qu'est-ce que SQL?... 2 2. La maintenance des bases de données... 2 2.1 La commande CREATE TABLE... 3 2.2 La commande ALTER TABLE... 4 2.3 La commande CREATE INDEX... 4 3. Les manipulations des bases

Plus en détail

Chapitre 1 : Introduction aux bases de données

Chapitre 1 : Introduction aux bases de données Chapitre 1 : Introduction aux bases de données Les Bases de Données occupent aujourd'hui une place de plus en plus importante dans les systèmes informatiques. Les Systèmes de Gestion de Bases de Données

Plus en détail

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

INTRODUCTION A JAVA. Fichier en langage machine Exécutable INTRODUCTION A JAVA JAVA est un langage orienté-objet pur. Il ressemble beaucoup à C++ au niveau de la syntaxe. En revanche, ces deux langages sont très différents dans leur structure (organisation du

Plus en détail

Séance 0 : Linux + Octave : le compromis idéal

Séance 0 : Linux + Octave : le compromis idéal Séance 0 : Linux + Octave : le compromis idéal Introduction Linux est un système d'exploitation multi-tâches et multi-utilisateurs, basé sur la gratuité et développé par une communauté de passionnés. C'est

Plus en détail

Programmation parallèle et distribuée

Programmation parallèle et distribuée Programmation parallèle et distribuée (GIF-4104/7104) 5a - (hiver 2014) Marc Parizeau, Département de génie électrique et de génie informatique Plan Mégadonnées («big data») Architecture Hadoop distribution

Plus en détail

Microsoft OSQL OSQL ou l'outil de base pour gérer SQL Server

Microsoft OSQL OSQL ou l'outil de base pour gérer SQL Server Microsoft OSQL OSQL ou l'outil de base pour gérer SQL Server Suite à mon précédent article concernant MSDE, je me suis rendu compte à partir des commentaires que de nombreux utilisateurs avaient des problèmes

Plus en détail

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml OCL Object Constraint Language Le langage de contraintes d'uml Plan 1. Introduction 2. Les principaux concepts d'ocl Object Constraint Language 1 Object Constraint Language 2 Exemple: une application bancaire

Plus en détail

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java Langages objets Introduction M2 Pro CCI, Informatique Emmanuel Waller, LRI, Orsay présentation du module logistique 12 blocs de 4h + 1 bloc 2h = 50h 1h15 cours, 45mn exercices table, 2h TD machine page

Plus en détail

Quelques éléments de compilation en C et makefiles

Quelques éléments de compilation en C et makefiles Quelques éléments de compilation en C et makefiles Guillaume Feuillade 1 Compiler un programme C Le principe de la compilation consiste à passer d un ensemble de fichiers de code à un programme exécutable

Plus en détail

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions Cours d introduction à l informatique Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions Qu est-ce qu un Une recette de cuisine algorithme? Protocole expérimental

Plus en détail

Certificat Big Data - Master MAthématiques

Certificat Big Data - Master MAthématiques 1 / 1 Certificat Big Data - Master MAthématiques Master 2 Auteur : Sylvain Lamprier UPMC Fouille de données et Medias Sociaux 2 / 1 Rich and big data: Millions d utilisateurs Millions de contenus Multimedia

Plus en détail

Perl Console. Votre compagnon pour développer en Perl. Les Journées du Perl 2007 16, 17 novembre, Lyon. Alexis Sukrieh <sukria@sukria.

Perl Console. Votre compagnon pour développer en Perl. Les Journées du Perl 2007 16, 17 novembre, Lyon. Alexis Sukrieh <sukria@sukria. Perl Console Votre compagnon pour développer en Perl Les Journées du Perl 2007 16, 17 novembre, Lyon Alexis Sukrieh Plan Pourquoi une console? Le modèle «Read-Eval-Print-Loop» Dépendances

Plus en détail

TP Bases de données réparties

TP Bases de données réparties page 1 TP Bases de données réparties requêtes réparties Version corrigée Auteur : Hubert Naacke, révision 5 mars 2003 Mots-clés: bases de données réparties, fragmentation, schéma de placement, lien, jointure

Plus en détail

Création et Gestion des tables

Création et Gestion des tables Création et Gestion des tables Version 1.0 Z Grégory CASANOVA 2 Sommaire 1 Introduction... 3 2 Pré-requis... 4 3 Les tables... 5 3.1 Les types de données... 5 3.1.1 Les types de données Sql Server... 5

Plus en détail

Utilisation d objets : String et ArrayList

Utilisation d objets : String et ArrayList Chapitre 6 Utilisation d objets : String et ArrayList Dans ce chapitre, nous allons aborder l utilisation d objets de deux classes prédéfinies de Java d usage très courant. La première, nous l utilisons

Plus en détail

Utiliser Access ou Excel pour gérer vos données

Utiliser Access ou Excel pour gérer vos données Page 1 of 5 Microsoft Office Access Utiliser Access ou Excel pour gérer vos données S'applique à : Microsoft Office Access 2007 Masquer tout Les programmes de feuilles de calcul automatisées, tels que

Plus en détail

LES TYPES DE DONNÉES DU LANGAGE PASCAL

LES TYPES DE DONNÉES DU LANGAGE PASCAL LES TYPES DE DONNÉES DU LANGAGE PASCAL 75 LES TYPES DE DONNÉES DU LANGAGE PASCAL CHAPITRE 4 OBJECTIFS PRÉSENTER LES NOTIONS D ÉTIQUETTE, DE CONS- TANTE ET DE IABLE DANS LE CONTEXTE DU LAN- GAGE PASCAL.

Plus en détail

Le langage SQL Rappels

Le langage SQL Rappels Le langage SQL Rappels Description du thème : Présentation des principales notions nécessaires pour réaliser des requêtes SQL Mots-clés : Niveau : Bases de données relationnelles, Open Office, champs,

Plus en détail

Bases de programmation. Cours 5. Structurer les données

Bases de programmation. Cours 5. Structurer les données Bases de programmation. Cours 5. Structurer les données Pierre Boudes 1 er décembre 2014 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License. Types char et

Plus en détail

Algorithmique et Programmation, IMA

Algorithmique et Programmation, IMA Algorithmique et Programmation, IMA Cours 2 : C Premier Niveau / Algorithmique Université Lille 1 - Polytech Lille Notations, identificateurs Variables et Types de base Expressions Constantes Instructions

Plus en détail

Programmation parallèle et distribuée

Programmation parallèle et distribuée Programmation parallèle et distribuée (GIF-4104/7104) 5a - (hiver 2015) Marc Parizeau, Département de génie électrique et de génie informatique Plan Données massives («big data») Architecture Hadoop distribution

Plus en détail

Chapitre 5 : Les procédures stockées PL/SQL

Chapitre 5 : Les procédures stockées PL/SQL I. Introduction Une procédure ou une fonction stockée est un bloc PL/SQL nommé pouvant accepter des paramètres et être appelée. Généralement, on utilise une fonction pour calculer une valeur. Les procédures

Plus en détail

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs) Modularité Extensions Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs) généricité modules de première classe : peuvent être

Plus en détail

Automatisation de l administration système

Automatisation de l administration système Automatisation de l administration système Plan Problèmatique : trop de systèmes, trop de solutions Typage des solutions Puppet : gestion de configuration de systèmes Capistrano : déploiement d applications

Plus en détail

La mémoire. Un ordinateur. L'octet. Le bit

La mémoire. Un ordinateur. L'octet. Le bit Introduction à l informatique et à la programmation Un ordinateur Un ordinateur est une machine à calculer composée de : un processeur (ou unité centrale) qui effectue les calculs une mémoire qui conserve

Plus en détail

Création d'un questionnaire (sondage)

Création d'un questionnaire (sondage) Création d'un questionnaire (sondage) Le but de ce petit tuto est d'avoir les séquences pas à pas pour la création d'un questionnaire de façon à ne pas devoir rechercher la manière de procéder si l'outil

Plus en détail

Le Langage SQL version Oracle

Le Langage SQL version Oracle Université de Manouba École Supérieure d Économie Numérique Département des Technologies des Systèmes d Information Le Langage SQL version Oracle Document version 1.1 Mohamed Anis BACH TOBJI anis.bach@isg.rnu.tn

Plus en détail

TP 1 Prise en main de l environnement Unix

TP 1 Prise en main de l environnement Unix Introduction aux systèmes d exploitation (IS1) TP 1 Prise en main de l environnement Unix Le but de ce premier TP est de commencer à vous familiariser avec l environnement Unix. 1 Ouverture de session

Plus en détail

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique Institut Supérieure Aux Etudes Technologiques De Nabeul Département Informatique Support de Programmation Java Préparé par Mlle Imene Sghaier 2006-2007 Chapitre 1 Introduction au langage de programmation

Plus en détail

Généralités sur le Langage Java et éléments syntaxiques.

Généralités sur le Langage Java et éléments syntaxiques. Généralités sur le Langage Java et éléments syntaxiques. Généralités sur le Langage Java et éléments syntaxiques....1 Introduction...1 Genéralité sur le langage Java....1 Syntaxe de base du Langage...

Plus en détail

1 Recherche en table par balayage

1 Recherche en table par balayage 1 Recherche en table par balayage 1.1 Problème de la recherche en table Une table désigne une liste ou un tableau d éléments. Le problème de la recherche en table est celui de la recherche d un élément

Plus en détail

TP1 : Initiation à Java et Eclipse

TP1 : Initiation à Java et Eclipse TP1 : Initiation à Java et Eclipse 1 TP1 : Initiation à Java et Eclipse Systèmes d Exploitation Avancés I. Objectifs du TP Ce TP est une introduction au langage Java. Il vous permettra de comprendre les

Plus en détail

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application Université de Provence Licence Math-Info Première Année V. Phan Luong Algorithmique et Programmation en Python Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application 1 Ordinateur Un

Plus en détail

Cours 1 : La compilation

Cours 1 : La compilation /38 Interprétation des programmes Cours 1 : La compilation Yann Régis-Gianas yrg@pps.univ-paris-diderot.fr PPS - Université Denis Diderot Paris 7 2/38 Qu est-ce que la compilation? Vous avez tous déjà

Plus en détail

Le Langage De Description De Données(LDD)

Le Langage De Description De Données(LDD) Base de données Le Langage De Description De Données(LDD) Créer des tables Décrire les différents types de données utilisables pour les définitions de colonne Modifier la définition des tables Supprimer,

Plus en détail

Cours Informatique Master STEP

Cours Informatique Master STEP Cours Informatique Master STEP Bases de la programmation: Compilateurs/logiciels Algorithmique et structure d'un programme Programmation en langage structuré (Fortran 90) Variables, expressions, instructions

Plus en détail

URECA Initiation Matlab 2 Laurent Ott. Initiation Matlab 2

URECA Initiation Matlab 2 Laurent Ott. Initiation Matlab 2 Initiation Matlab 2 1 Chaînes de caractères (string) Une chaîne de caractères (string en anglais) est une suite ordonnée de caractères (du texte, par exemple). Sous matlab, les chaînes de caractères sont

Plus en détail

Licence ST Université Claude Bernard Lyon I LIF1 : Algorithmique et Programmation C Bases du langage C 1 Conclusion de la dernière fois Introduction de l algorithmique générale pour permettre de traiter

Plus en détail

Recherche dans un tableau

Recherche dans un tableau Chapitre 3 Recherche dans un tableau 3.1 Introduction 3.1.1 Tranche On appelle tranche de tableau, la donnée d'un tableau t et de deux indices a et b. On note cette tranche t.(a..b). Exemple 3.1 : 3 6

Plus en détail

Ricco Rakotomalala http://eric.univ-lyon2.fr/~ricco/cours/cours_programmation_r.html. R.R. Université Lyon 2

Ricco Rakotomalala http://eric.univ-lyon2.fr/~ricco/cours/cours_programmation_r.html. R.R. Université Lyon 2 Ricco Rakotomalala http://eric.univ-lyon2.fr/~ricco/cours/cours_programmation_r.html 1 Plan de présentation 1. L écosystème Hadoop 2. Principe de programmation MapReduce 3. Programmation des fonctions

Plus en détail

1. Cliquez sur dans le coin supérieur gauche de l'écran 2. Sélectionnez la Langue de l'interface désirée 3. Cliquez sur

1. Cliquez sur dans le coin supérieur gauche de l'écran 2. Sélectionnez la Langue de l'interface désirée 3. Cliquez sur NOTIFICATIONS GUIDE Le module Notifications permet de retrouver des notifications en utilisant les champs spécifiques de la base de données du Registre central des notifications (RCN). Il comporte une

Plus en détail

Anticiper et prédire les sinistres avec une approche Big Data

Anticiper et prédire les sinistres avec une approche Big Data Anticiper et prédire les sinistres avec une approche Big Data Julien Cabot Directeur Big Data Analytics OCTO jcabot@octo.com @julien_cabot OCTO 2013 50, avenue des Champs-Elysées 75008 Paris - FRANCE Tél

Plus en détail

1 Introduction et installation

1 Introduction et installation TP d introduction aux bases de données 1 TP d introduction aux bases de données Le but de ce TP est d apprendre à manipuler des bases de données. Dans le cadre du programme d informatique pour tous, on

Plus en détail

Python - introduction à la programmation et calcul scientifique

Python - introduction à la programmation et calcul scientifique Université de Strasbourg Environnements Informatique Python - introduction à la programmation et calcul scientifique Feuille de TP 1 Avant de commencer Le but de ce TP est de vous montrer les bases de

Plus en détail

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT Ces exercices portent sur les items 2, 3 et 5 du programme d informatique des classes préparatoires,

Plus en détail

Trier les ventes (sales order) avec Vtiger CRM

Trier les ventes (sales order) avec Vtiger CRM Trier les ventes (sales order) avec Vtiger CRM Dans l'activité d'une entreprise, on peut avoir besoin d'un outil pour trier les ventes, ce afin de réaliser un certain nombre de statistiques sur ces ventes,

Plus en détail

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu.

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu. Seance 2: Complétion du code de jeu. (durée max: 2h) Mot clé const et pointeurs: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu. Implémentez jeu_recupere_piece

Plus en détail

Chapitre 1 Qu est-ce qu une expression régulière?

Chapitre 1 Qu est-ce qu une expression régulière? Chapitre 1 Qu est-ce qu une expression régulière? Les ordinateurs n ont pas du tout la même conception des textes que nous : pour nous, un texte est un ensemble d idées couchées sur papier. Nous nous en

Plus en détail

I. MySQL : Serveur et SGBD

I. MySQL : Serveur et SGBD Le Système de Gestion de Base de Données MySQL I. MySQL : Serveur et SGBD Menu I. MySQL : Serveur et SGBG II. Création d'une base de données avec MySQL MySQL est un système de gestion et conception de

Plus en détail

IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C IN 102 - Cours 1 Qu on le veuille ou non, les systèmes informatisés sont désormais omniprésents. Même si ne vous destinez pas à l informatique, vous avez de très grandes chances d y être confrontés en

Plus en détail

Mysql. Les requêtes préparées Prepared statements

Mysql. Les requêtes préparées Prepared statements Mysql Les requêtes préparées Prepared statements Introduction Les prepared statements côté serveur sont une des nouvelles fonctionnalités les plus intéressantes de MySQL 4.1 (récemment sorti en production

Plus en détail

Jérôme FESSY. IUT de Paris 5. Base de Données. Cours Introductif. Base de Données

Jérôme FESSY. IUT de Paris 5. Base de Données. Cours Introductif. Base de Données Base de Données Cours Introductif Base de Données Quelques chiffres Évolution annuelle moyenne 2004/2000 15% +20% 12% 5% 0.5% 2000 2004 L3G IA SG mono poste : Part de marché 5% 5% 10% Paradox 65% SG 15%

Plus en détail

Serveur Acronis Backup & Recovery 10 pour Linux. Update 5. Guide d'installation

Serveur Acronis Backup & Recovery 10 pour Linux. Update 5. Guide d'installation Serveur Acronis Backup & Recovery 10 pour Linux Update 5 Guide d'installation Table des matières 1 Avant l'installation...3 1.1 Composants d'acronis Backup & Recovery 10... 3 1.1.1 Agent pour Linux...

Plus en détail

OCL - Object Constraint Language

OCL - Object Constraint Language OCL - Object Constraint Language Laëtitia Matignon laetitia.matignon@univ-lyon1.fr Département Informatique - Polytech Lyon Université Claude Bernard Lyon 1 2012-2013 Laëtitia Matignon SIMA - OCL - Object

Plus en détail

1. Installation du Module

1. Installation du Module 1 sur 10 Mise en place du Module Magento V 1.5.7 1. Installation du Module Vous pouvez installer le module de deux façons différentes, en passant par Magento Connect, ou directement via les fichiers de

Plus en détail

Unix/Linux I. 1 ere année DUT. Université marne la vallée

Unix/Linux I. 1 ere année DUT. Université marne la vallée Unix/Linux I 1 ere année DUT Université marne la vallée 1 Introduction 2 Fonctions et spécifité d Unix Architecture 3 4 5 Fichier Unix Arborescence de fichiers Quelques commandes sur les fichiers Chemins

Plus en détail

Cours d initiation à la programmation en C++ Johann Cuenin

Cours d initiation à la programmation en C++ Johann Cuenin Cours d initiation à la programmation en C++ Johann Cuenin 11 octobre 2014 2 Table des matières 1 Introduction 5 2 Bases de la programmation en C++ 7 3 Les types composés 9 3.1 Les tableaux.............................

Plus en détail

Chapitre VIII. Les bases de données. Orientées Objet. Motivation

Chapitre VIII. Les bases de données. Orientées Objet. Motivation Chapitre VIII Motivation Le modèle relationnel connaît un très grand succès et s avère très adéquat pour les applications traditionnelles des bases de données (gestion) Les bases de données Orientées Objet

Plus en détail

Fouillez facilement dans votre système Big Data. Olivier TAVARD

Fouillez facilement dans votre système Big Data. Olivier TAVARD Fouillez facilement dans votre système Big Data Olivier TAVARD A propos de moi : Cofondateur de la société France Labs Développeur (principalement Java) Formateur en technologies de moteurs de recherche

Plus en détail

Les technologies du Big Data

Les technologies du Big Data Les technologies du Big Data PRÉSENTÉ AU 40 E CONGRÈS DE L ASSOCIATION DES ÉCONOMISTES QUÉBÉCOIS PAR TOM LANDRY, CONSEILLER SENIOR LE 20 MAI 2015 WWW.CRIM.CA TECHNOLOGIES: DES DONNÉES JUSQU'À L UTILISATEUR

Plus en détail

PRODIGE V3. Manuel utilisateurs. Consultation des métadonnées

PRODIGE V3. Manuel utilisateurs. Consultation des métadonnées PRODIGE V3 Manuel utilisateurs Consultation des métadonnées Pour plus d'information sur le dispositif : à remplir par chaque site éventuellement 2 PRODIGE V3 : Consultation des métadonnées SOMMAIRE 1.

Plus en détail

Langage SQL (1) 4 septembre 2007. IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

Langage SQL (1) 4 septembre 2007. IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes Langage SQL (1) Sébastien Limet Denys Duchier IUT Orléans 4 septembre 2007 Notions de base qu est-ce qu une base de données? SGBD différents type de bases de données quelques systèmes existants Définition

Plus en détail

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2 SQL Sommaire : COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2 COMMANDES DE MANIPULATION DE DONNEES... 2 COMMANDES DE CONTROLE TRANSACTIONNEL... 2 COMMANDES DE REQUETE DE DONNEES... 2 COMMANDES

Plus en détail

MapReduce. Nicolas Dugué nicolas.dugue@univ-orleans.fr. M2 MIAGE Systèmes d information répartis

MapReduce. Nicolas Dugué nicolas.dugue@univ-orleans.fr. M2 MIAGE Systèmes d information répartis MapReduce Nicolas Dugué nicolas.dugue@univ-orleans.fr M2 MIAGE Systèmes d information répartis Plan 1 Introduction Big Data 2 MapReduce et ses implémentations 3 MapReduce pour fouiller des tweets 4 MapReduce

Plus en détail

Cours d Informatique

Cours d Informatique Cours d Informatique 1ère année SM/SMI 2007/2008, Info 2 Département de Mathématiques et d Informatique, Université Mohammed V elbenani@hotmail.com sayah@fsr.ac.ma 2007/2008 Info2, 1ère année SM/SMI 1

Plus en détail

Conventions d écriture et outils de mise au point

Conventions d écriture et outils de mise au point Logiciel de base Première année par alternance Responsable : Christophe Rippert Christophe.Rippert@Grenoble-INP.fr Introduction Conventions d écriture et outils de mise au point On va utiliser dans cette

Plus en détail

1. Introduction...2. 2. Création d'une requête...2

1. Introduction...2. 2. Création d'une requête...2 1. Introduction...2 2. Création d'une requête...2 3. Définition des critères de sélection...5 3.1 Opérateurs...5 3.2 Les Fonctions...6 3.3 Plusieurs critères portant sur des champs différents...7 3.4 Requête

Plus en détail