Hadoop / Big Data. Benjamin Renaut <renaut.benjamin@tokidev.fr> MBDS
|
|
- Jean-Paul Beaupré
- il y a 8 ans
- Total affichages :
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) Hadoop MapReduce et HDFS Note bibliographique : ce cours est largement inspiré par le cours de Benjamin Renaut (Tokidev SAS) Introduction
Plus en détailHadoop / 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étailHadoop / 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étailTP 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étailHadoop / 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étailFormation 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étailtd3a 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étailInitiation à 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étailUEO11 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étailTable 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étailL 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étailPré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étailMapReduce. 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étailTP 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étailHadoop / 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étailI. 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étailMODE 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étailIntroduction à 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étailHadoop / 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étailIntroduction à 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étail1. 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étailChapitre 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étailPROJET 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étailSHERLOCK 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étailBig 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étailTP : 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étailMesurer 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étailNFA 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étailINITIATION 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étailIntroduction à 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étail1. 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étailChapitre 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étailINTRODUCTION 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étailSé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étailProgrammation 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étailMicrosoft 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étailPlan. 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étailCours 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étailQuelques é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étailCours 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étailCertificat 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étailPerl 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étailTP 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étailCré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étailUtilisation 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étailUtiliser 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étailLES 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étailLe 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étailBases 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étailAlgorithmique 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étailProgrammation 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étailChapitre 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étailSuivant 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étailAutomatisation 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étailLa 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étailCré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étailLe 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étailTP 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étailInstitut 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étailGé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étail1 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étailTP1 : 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étailCours 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étailCours 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étailLe 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étailCours 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étailURECA 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étailLicence 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étailRecherche 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étailRicco 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étail1. 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étailAnticiper 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étail1 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étailPython - 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étailExercices 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étailTrier 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étailSeance 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étailChapitre 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étailI. 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étailIN 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étailMysql. 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étailJé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étailServeur 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étailOCL - 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étail1. 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étailUnix/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étailCours 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étailChapitre 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étailFouillez 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étailLes 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étailPRODIGE 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étailLangage 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étailCOMMANDES 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étailMapReduce. 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étailCours 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étailConventions 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étail1. 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