Sunday, January 22, 2017

Simple Mobile Moyenne Mysql

Obtenir une liste de valeurs uniques à partir d'une colonne MySQL Voulez-vous obtenir une liste de toutes les valeurs différentes d'une colonne? Utilisez le mot clé DISTINCT. Voici un exemple: (écrit 2005-04-14, mise à jour 2006-06-05) Les rubriques associées sont indexées comme ci-dessous ou entrez melksh. amnnnn pour les articles individuels S157 - Plus de commandes MySQL 4481 Extraction de données de sauvegardes pour restaurer des lignes sélectionnées à partir de MySQL Tableaux - (2015-05-01) 3270 SQL - Données v Métadonnées et les différentes étapes de sélection des données - (2011-04-29) 3061 Bases de données - pourquoi les données sont-elles divisées en tables distinctes et comment les rejoindre? -26-22) 2647 Suppression des doublons d'une table MySQL - (2010-02-22) 2645 Optimisation et mise en cache de vos requêtes MySQL - (2010-02-22) 2644 Comptage des lignes dans les tables MySQL jointes - (2010-02-22) 2643 Relier des tables avec des jointures dans MySQL - (2010-02-21) 2448 MySQL - efficacité et autres sujets - (2009-10-10) 2259 Groupement de lignes pour un rapport de synthèse - MySQL et PHP - (2009-06-27) 2110 MySQL - recherche des enregistrements dans une table qui ne correspondent PAS aux enregistrements dans une autre table - (2009-03-31) 1904 Ruby, Perl, Linux, MySQL - quelques notes de formation - (2008-11-23) 1735 Trouver des mots et du travail (MySQL, Perl, PHP) - (2008-08-03) 1574 Rejoindre les tables MySQL revisitées - trouver des enregistrements non concordants, etc - (2008-03-15) 1331 MySQL rejoint - (2007-09-03) 1235 Sortie de nombres Comme des mots - MySQL avec Perl ou PHP - (2007-06-17) 1213 MySQL - l'ordre des clauses et l'ordre des actions - (2007-06-01) 673 Vue d'hélicoptère et tartans - (2006-04-06) 591 Faits saillants - SQL et MySQL - (2006-02-04) 581 Enregistrement d'un résultat de requête MySQL sur votre disque local pour Excel - (2006-01-29) 572 Donner au chercheur un pouvoir sur l'analyse des bases de données - (2006-01-22) 567 Combiner des lignes similaires à partir d'une base de données MySQL sélectionner - (2006-01-17) 517 Un hasard occasionnel et réduire les données à des niveaux gérables - (2005-12-04) 515 MySQL - a FAQ - (2005-12-03) 513 MySQL - JOIN ou WHERE pour lier les tables correctement - (2005-12-01) 502 SELECT dans MySQL - choisir les lignes que vous voulez - (2005-11-22) 494 MySQL - une vingtaine de choses à retenir - (2005-11- MySQL - LEFT JOIN et RIGHT JOIN, INNER JOIN et OUTER JOIN - (2004-12-20) Quelques-unes Autres articles 4722 messages, page par page Il s'agit d'une page archivée de The Horses Mouth à wellho. nethorse - le journal et les écrits de Graham Ellis. Chaque tentative a été faite pour fournir des informations actuelles au moment où la page a été écrite, mais les choses avancent dans notre entreprise - nouvelles versions de logiciels, les changements de prix, de nouvelles techniques. Veuillez consulter notre site principal pour connaître les cours en cours, les prix, les versions, etc. - toute mention d'un prix à The Horses Mouth ne peut pas être considérée comme une offre de prix à ce prix. Merci de votre visite. Nous ne fournissons pas de commandites ou d'invitations à nos cours pour soutenir les demandes de Visa au Royaume-Uni. Si vous souhaitez réserver un de nos cours et êtes un ressortissant de l'Ukraine, veuillez vérifier auprès de votre consulat britannique local et prendre les arrangements nécessaires Visa avant de réserver. Plus Commentaire de Colin (publié 2010-10-08) Lien suggéré. Havent vu votre site surgissent dans des recherches sql depuis des années. J'ai cette page trouvé la recherche d'une solution à un problème légèrement différent: J'ai besoin d'une liste de valeurs uniques et un id. Tout id va le faire. Premier ou dernier. Alors, comment à partir de votre table: Comment retourner la destination distincte avec un tid Pick a tid, tout stackoverflow tid a un problème similaire. Je donne le lien. Mon col je veux unique a quelques calcs lourds, donc j'essaie d'éviter multi sélectionne et se joint aussi loin que possible. 3783 Classement moyen de la page - 4.0Hadoop exemple: Hello World avec Java, Pig, Hive, Flume, Fuse, Oozie et Sqoop avec Informix, DB2 et MySQL Il ya beaucoup d'excitation à Big Data et beaucoup de confusion à aller avec il. Cet article fournit une définition opérationnelle de Big Data, puis fonctionne à travers une série d'exemples afin que vous puissiez avoir une compréhension de première main de certaines des capacités de Hadoop, la principale technologie open source dans le domaine Big Data. Plus précisément, nous allons nous concentrer sur les questions suivantes. Qu'est-ce que Big Data, Hadoop, Sqoop, Hive et Pig, et pourquoi y at-il autant d'excitation dans cet espace Comment Hadoop se rapporte-t-il à IBM DB2 et Informix Ces technologies peuvent-elles jouer ensemble Comment puis - Des exemples qui s'exécutent sur un seul PC Pour le super impatient, si vous pouvez déjà définir Hadoop et que vous souhaitez obtenir droit à travailler sur les échantillons de code, puis faites ce qui suit. Démarrez votre instance Informix ou DB2. Téléchargez l'image VMWare à partir du site Web Cloudera et augmentez le paramètre RAM de la machine virtuelle à 1,5 Go. Accédez à la section qui contient les exemples de code. Il existe une instance MySQL intégrée à l'image VMWare. Si vous faites les exercices sans connectivité réseau, utilisez les exemples MySQL. Pour tout le monde, lisez la suite. Qu'est-ce que Big Data Big Data est grand en quantité, est capturé à un rythme rapide, et est structuré ou non structuré, ou une combinaison de ce qui précède. Ces facteurs rendent Big Data difficile à capturer, à exploiter et à gérer en utilisant des méthodes traditionnelles. Il ya tellement de battage dans cet espace qu'il pourrait y avoir un débat prolongé juste au sujet de la définition des grandes données. L'utilisation de la technologie Big Data n'est pas limitée aux grands volumes. Les exemples de cet article utilisent de petits échantillons pour illustrer les capacités de la technologie. À partir de l'année 2012, les grappes qui sont grands sont dans la gamme de 100 Petabyte. Big Data peut être à la fois structuré et non structuré. Les bases de données relationnelles traditionnelles, comme Informix et DB2, fournissent des solutions éprouvées pour les données structurées. Grâce à l'extensibilité, ils gèrent également des données non structurées. La technologie Hadoop apporte des techniques de programmation nouvelles et plus accessibles pour travailler sur des magasins de données massifs avec des données structurées et non structurées. Pourquoi toute l'excitation Il existe de nombreux facteurs qui contribuent au battage publicitaire autour de Big Data, y compris les suivants. Mettre le calcul et le stockage ensemble sur le matériel de base: Le résultat est une vitesse fulgurante à faible coût. Performance des prix: La grande technologie de données Hadoop permet des économies considérables (un facteur d'environ 10) avec des améliorations de performances significatives (encore une fois, facteur de réflexion de 10). Votre kilométrage peut varier. Si la technologie existante peut être si radicalement renversée, il vaut la peine d'examiner si Hadoop peut compléter ou remplacer des aspects de votre architecture actuelle. Évolutivité linéaire: Chaque technologie parallèle fait des allégations sur la mise à niveau. Hadoop a une véritable évolutivité car la dernière version étend la limite du nombre de nœuds à plus de 4 000. Accès total aux données non structurées: MapReduce, un magasin de données hautement évolutif doté d'un bon modèle de programmation parallèle, a été un défi pour l'industrie depuis un certain temps. Hadoops modèle de programmation ne résout pas tous les problèmes, mais il est une solution solide pour de nombreuses tâches. Les exemples de cet article sont basés sur la distribution gratuite de Cloudera de Hadoop appelée CDH (pour la distribution de Cloudera y compris Hadoop). Ceci est disponible en tant qu'image VMWare sur le site Cloudera. IBM a récemment annoncé qu'il transportait sa grande plate-forme de données pour fonctionner sur CDH. Le terme de technologie perturbatrice est fortement utilisé, mais dans ce cas peut être approprié. Qu'est-ce que Hadoop Voici plusieurs définitions de Hadoop, chacune visant un public différent au sein de l'entreprise: Pour les cadres: Hadoop est un projet de logiciel open source Apache pour obtenir de la valeur de l'incroyable quantité de données sur votre organisation. Utilisez les données au lieu de jeter la plupart d'elle. Pour les responsables techniques: Une suite logicielle open source qui détruit le BigData structuré et non structuré de votre entreprise. Il s'intègre à votre écosystème de Business Intelligence existant. Juridique: Une suite logicielle open source qui est fournie et supportée par plusieurs fournisseurs. Ingénierie: un environnement d'exécution de cartographie réduit de façon massive, partagée et sans partage. Pensez à des centaines de milliers d'ordinateurs travaillant sur le même problème, avec la résilience intégrée des défaillances. Les projets de l'écosystème Hadoop permettent le chargement des données, les langages de haut niveau, le déploiement automatisé des nuages ​​et d'autres fonctionnalités. Sécurité: une suite logicielle sécurisée par Kerberos. Quels sont les composants de Hadoop? Le projet Hadoop Apache a deux composants principaux, le magasin de fichiers appelé Hadoop Distributed File System (HDFS), et le cadre de programmation appelé MapReduce. Il existe un certain nombre de projets de soutien qui tirent parti de HDFS et MapReduce. Cet article fournira un résumé, et vous encourage à obtenir le livre OReily Hadoop The Definitive Guide, 3ème édition, pour plus de détails. Les définitions ci-dessous sont destinées à fournir juste assez d'arrière-plan pour que vous puissiez utiliser les exemples de code qui suivent. Cet article est vraiment destiné à vous aider à démarrer avec une expérience pratique avec la technologie. Il s'agit d'un article comment-à plus d'un article de quoi-est ou permet de discuter. HDFS. Si vous voulez que 4000 ordinateurs fonctionnent sur vos données, vous pourrez mieux répartir vos données sur 4000 ordinateurs. HDFS fait cela pour vous. HDFS dispose de quelques pièces mobiles. Le Datanodes stocke vos données, et le Namenode garde la trace de l'endroit où les choses sont stockées. Il ya d'autres pièces, mais vous avez assez pour commencer. MapReduce. C'est le modèle de programmation pour Hadoop. Il ya deux phases, pas étonnamment appelé Map et Réduire. Pour impressionner vos amis, dites-leur qu'il y a un mélange entre les phases Map et Reduce. JobTracker gère les 4000 composants de votre job MapReduce. Les TaskTrackers prennent les commandes de JobTracker. Si vous aimez Java puis codez en Java. Si vous aimez SQL ou d'autres langages non-Java vous êtes toujours dans la chance, vous pouvez utiliser un utilitaire appelé Hadoop Streaming. Hadoop en continu. Un utilitaire permettant d'activer le code MapReduce dans n'importe quelle langue: C, Perl, Python, C, Bash, etc. Les exemples incluent un mappeur Python et un réducteur AWK. Ruche et Hue. Si vous aimez SQL, vous serez ravi d'entendre que vous pouvez écrire SQL et que Hive le convertit en un job MapReduce. Non, vous n'avez pas un environnement ANSI-SQL complet, mais vous obtenez 4000 notes et multi-Petabyte évolutivité. Hue vous donne une interface graphique basée sur le navigateur pour faire votre travail Hive. Porc . Un environnement de programmation de niveau supérieur pour le codage MapReduce. Le Pig langue est appelée Pig Latin. Vous pouvez trouver les conventions de dénomination un peu conventionnelles, mais vous obtenez incroyable prix-performance et haute disponibilité. Sqoop. Fournit un transfert de données bidirectionnel entre Hadoop et votre base de données relationnelle préférée. Oozie. Gère le workflow Hadoop. Cela ne remplace pas votre planificateur ou outil BPM, mais il fournit if-then-else ramification et de contrôle au sein de vos travaux Hadoop. HBase. Un magasin de valeurs-clés super-évolutif. Il fonctionne comme un hash-map persistant (pour les fans de python pense dictionnaire). Ce n'est pas une base de données relationnelle en dépit du nom HBase. FlumeNG. Un chargeur en temps réel pour le streaming de vos données dans Hadoop. Il stocke les données dans HDFS et HBase. Vous voulez commencer avec FlumeNG, ce qui améliore sur le canal d'origine. Whirr. Approvisionnement Cloud pour Hadoop. Vous pouvez démarrer un cluster en quelques minutes avec un fichier de configuration très court. Mahout. Apprentissage automatique pour Hadoop. Utilisé pour l'analyse prédictive et autres analyses avancées. Fusible. Rend le système HDFS ressembler à un système de fichiers régulier de sorte que vous pouvez utiliser ls, rm, cd, et d'autres sur les données HDFS Zookeeper. Permet de gérer la synchronisation du cluster. Vous ne travaillerez pas beaucoup avec Zookeeper, mais il travaille dur pour vous. Si vous pensez que vous avez besoin d'écrire un programme qui utilise Zookeeper vous êtes soit très, très, intelligent et pourrait être un comité pour un projet Apache, ou vous êtes sur le point d'avoir une très mauvaise journée. La figure 1 montre les pièces clés de Hadoop. Figure 1. Hadoop architecture HDFS, la couche inférieure, se trouve sur un cluster de matériel de base. Serveurs montés en rack simples, chacun avec des processeurs de cœur à 2 hexagones, 6 à 12 disques et 32 ​​billes. Pour un travail de réduction de carte, la couche de mappeur lit à partir des disques à très grande vitesse. Le mappeur émet des paires de valeurs clés qui sont triées et présentées au réducteur, et la couche réductrice résume les paires clé-valeur. Non, vous n'avez pas à résumer, vous pouvez réellement avoir un travail de réduction de carte qui n'a que des mappeurs. Cela devrait devenir plus facile à comprendre lorsque vous arrivez à l'exemple python-awk. Comment Hadoop s'intègre-t-il à mon infrastructure Informix ou DB2 Hadoop s'intègre très bien avec vos bases de données Informix et DB2 avec Sqoop. Sqoop est la principale implémentation open source pour le transfert de données entre Hadoop et les bases de données relationnelles. Il utilise JDBC pour lire et écrire Informix, DB2, MySQL, Oracle et d'autres sources. Il existe des adaptateurs optimisés pour plusieurs bases de données, dont Netezza et DB2. Mise en route: Comment exécuter des exemples simples de Hadoop, Hive, Pig, Oozie et Sqoop Vous avez terminé avec les introductions et les définitions, maintenant il est temps pour les bonnes choses. Pour continuer, vous aurez besoin de télécharger le VMWare, la boîte virtuelle ou une autre image du site Web Cloudera et commencer à faire MapReduce L'image virtuelle suppose que vous avez un ordinateur 64 bits et l'un des environnements de virtualisation populaires. La plupart des environnements de virtualisation ont un téléchargement gratuit. Lorsque vous essayez de démarrer une image virtuelle 64 bits, vous pouvez obtenir des plaintes sur les paramètres du BIOS. La figure 2 montre le changement requis dans le BIOS, dans ce cas sur un Thinkpad8482. Soyez prudent lorsque vous effectuez des modifications. Certains paquetages de sécurité d'entreprise nécessiteront un code d'accès après un changement de BIOS avant que le système ne redémarre. Figure 2. Paramètres du BIOS pour un invité virtuel 64 bits Les grandes données utilisées ici sont plutôt petites. Le but n'est pas de rendre votre ordinateur portable attraper sur le feu de broyage sur un fichier massif, mais pour vous montrer des sources de données qui sont intéressants, et la carte de réduire les emplois qui répondent à des questions significatives. Téléchargez l'image virtuelle Hadoop Il est fortement recommandé d'utiliser l'image Cloudera pour exécuter ces exemples. Hadoop est une technologie qui résout les problèmes. L'emballage d'image Cloudera vous permet de vous concentrer sur les questions les plus importantes. Mais si vous décidez d'assembler toutes les pièces vous-même, Hadoop est devenu le problème, pas la solution. Téléchargez une image. L'image CDH4, la dernière offre est disponible ici: CDH4 image. La version antérieure, CDH3, est disponible ici: CDH3 image. Vous avez le choix entre les technologies de virtualisation. Vous pouvez télécharger un environnement de virtualisation gratuit de VMWare et autres. Par exemple, accédez à vmware et téléchargez le vmware-player. Votre ordinateur portable fonctionne probablement sous Windows, donc téléchargez le vmware-player pour Windows. Les exemples dans cet article utiliseront VMWare pour ces exemples et exécuter Ubuntu Linux en utilisant tar au lieu de winzip ou équivalent. Une fois téléchargé, untarunzip comme suit: tar - zxvf cloudera-demo-vm-cdh4.0.0-vmware. tar. gz. Ou, si vous utilisez CDH3, puis utilisez ce qui suit: tar - zxvf cloudera-demo-vm-cdh3u4-vmware. tar. gz Unzip fonctionne généralement sur les fichiers tar. Une fois décompressé, vous pouvez lancer l'image comme suit: vmplayer cloudera-demo-vm. vmx. Vous aurez maintenant un écran qui ressemble à ce qui est montré dans la Figure 3. Figure 3. Image virtuelle Cloudera La commande vmplayer plonge directement dans et démarre la machine virtuelle. Si vous utilisez CDH3, vous devrez alors arrêter la machine et changer les paramètres de mémoire. Utilisez l'icône du bouton d'alimentation située à côté de l'horloge au milieu de l'écran pour éteindre la machine virtuelle. Vous avez alors un accès d'édition aux paramètres de la machine virtuelle. Pour CDH3, l'étape suivante consiste à supercharger l'image virtuelle avec plus de RAM. La plupart des paramètres ne peuvent être modifiés que lorsque la machine virtuelle est hors tension. La figure 4 montre comment accéder au réglage et augmenter la RAM allouée à plus de 2 Go. Figure 4. Ajout de RAM à la machine virtuelle Comme illustré à la Figure 5, vous pouvez modifier le paramètre réseau en mode pont. Avec ce paramètre, la machine virtuelle obtient sa propre adresse IP. Si cela crée des problèmes sur votre réseau, vous pouvez éventuellement utiliser la traduction d'adresses réseau (NAT). Vous utiliserez le réseau pour vous connecter à la base de données. Figure 5. Modification des paramètres de réseau à pont Vous êtes limité par la RAM sur le système hôte, alors n'essayez pas d'allouer plus de RAM que ce qui existe sur votre machine. Si vous le faites, l'ordinateur fonctionnera très lentement. Maintenant, pour le moment que vous avez attendu, allez-y et allumez la machine virtuelle. L'utilisateur cloudera est automatiquement connecté au démarrage. Si vous en avez besoin, le mot de passe Cloudera est: cloudera. Installer Informix et DB2 Vous aurez besoin d'une base de données pour travailler. Si vous ne disposez pas déjà d'une base de données, vous pouvez télécharger l'édition Developer Informix ici ou DB2 Express-C Edition gratuite. Une autre alternative pour installer DB2 est de télécharger l'image VMWare qui a déjà DB2 installé sur un système d'exploitation SuSE Linux. Connectez-vous en tant que root, avec le mot de passe: password. Basculez vers l'identifiant utilisateur db2inst1. Travailler en tant que root est comme conduire une voiture sans ceinture de sécurité. S'il vous plaît parlez à votre DBA locales amicales sur la mise en marche de la base de données. Cet article ne couvre pas que ici. N'essayez pas d'installer la base de données dans l'image virtuelle Cloudera car il n'y a pas assez d'espace disque libre. La machine virtuelle va se connecter à la base de données en utilisant Sqoop qui nécessite un pilote JDBC. Vous devrez disposer du pilote JDBC pour votre base de données dans l'image virtuelle. Vous pouvez installer le pilote Informix ici. Le pilote Informix JDBC (n'oubliez pas que le pilote à l'intérieur de l'image virtuelle, pas la base de données) est affiché dans la liste 1. Listing 1. Installation du pilote JDBC Informix Remarque: Sélectionnez un sous-répertoire relatif à homecloudera afin de ne pas exiger d'autorisation root pour le installation. Le pilote DB2 JDBC est au format zippé, il suffit de le décompresser dans le répertoire de destination, comme indiqué dans la liste 2. Listing 2. Installation du pilote JDBC DB2 Une introduction rapide à HDFS et MapReduce Avant de commencer à déplacer des données entre votre base de données relationnelle et Hadoop, Vous avez besoin d'une introduction rapide à HDFS et MapReduce. Il ya beaucoup de tutoriels de style bonjour monde pour Hadoop, donc les exemples ici sont destinés à donner suffisamment d'arrière-plan pour les exercices de base de données pour faire sens pour vous. HDFS fournit un stockage sur les nœuds de votre cluster. La première étape de l'utilisation de Hadoop consiste à mettre des données dans HDFS. Le code montré dans la liste 3 obtient une copie d'un livre de Mark Twain et d'un livre de James Fenimore Cooper et copie ces textes dans HDFS. Listing 3. Chargez Mark Twain et James Fenimore Cooper dans HDFS Vous avez maintenant deux fichiers dans un répertoire dans HDFS. S'il vous plaît contenir votre excitation. Sérieusement, sur un seul noeud et avec seulement environ 1 mégaoctet, c'est aussi excitant que regarder la peinture sèche. Mais s'il s'agissait d'un cluster de 400 noeuds et que vous aviez 5 petabytes en direct, alors vous auriez vraiment du mal à contenir votre excitation. Beaucoup de didacticiels Hadoop utilisent l'exemple de comptage de mots qui est inclus dans l'exemple de fichier jar. Il s'avère que beaucoup de l'analyse implique le comptage et l'agrégation. L'exemple de la liste 4 vous montre comment appeler le compteur de mots. Listing 4. Comptage des mots de Twain et Cooper Le suffixe. gz sur le fichier DS. txt. gz indique à Hadoop de traiter la décompression dans le cadre du traitement Map-Reduce. Cooper est un peu détaillé si bien mérite le compactage. Il ya tout un flux de messages d'exécuter votre travail de comptage de mots. Hadoop est heureux de fournir beaucoup de détails sur les programmes de cartographie et de réduction en cours d'exécution en votre nom. Les lignes critiques que vous souhaitez rechercher figurent dans la liste 5, y compris une deuxième liste d'un travail ayant échoué et la façon de corriger l'une des erreurs les plus courantes que vous rencontrerez en exécutant MapReduce. Liste 5. Messages MapReduce - le chemin heureux Que signifient tous les messages Hadoop a fait beaucoup de travail et essaie de vous en informer, y compris ce qui suit. Vérifié pour voir si le fichier d'entrée existe. Vérifié pour voir si le répertoire de sortie existe et si elle le fait, annuler le travail. Rien de pire que d'écraser les heures de calcul par une simple erreur de clavier. Distribué le fichier Java jar à tous les nœuds responsables du travail. Dans ce cas, il s'agit d'un seul nœud. Exécution de la phase de mappeur du travail. En règle générale, ceci analyse le fichier d'entrée et émet une paire de valeurs de clé. Notez que la clé et la valeur peuvent être des objets. Géré la phase de tri, qui trie la sortie du mappeur basée sur la clé. Exécution de la phase de réduction, généralement, cela résume le flux de valeur-clé et écrit la sortie à HDFS. Créé de nombreuses mesures sur les progrès. La Figure 6 montre un exemple de page Web des statistiques de travail Hadoop après l'exécution de l'exercice Hive. Figure 6. Exemple de page Web de Hadoop Que faisait le travail et où est la sortie Les deux questions sont bonnes et sont montrées dans la liste 6. Liste 6. Carte-Réduire la sortie Si vous exécutez le même travail deux fois et oubliez Supprimez le répertoire de sortie, vous recevrez les messages d'erreur montrés dans la liste 7. La correction de cette erreur est aussi simple que la suppression du répertoire. Liste 7. Messages MapReduce - échec dû à une sortie déjà existante dans HDFS Hadoop inclut une interface de navigateur pour inspecter l'état de HDFS. La figure 7 montre la sortie du travail de comptage de mots. Figure 7. Exploration de HDFS avec un navigateur Une console plus sophistiquée est disponible gratuitement sur le site Web de Cloudera. Il fournit un certain nombre de capacités au-delà des interfaces Web Hadoop standard. Notez que l'état de santé de HDFS dans la figure 8 est indiqué comme mauvais. Figure 8. Services Hadoop gérés par Cloudera Manager Pourquoi est-ce mauvais Parce que dans une seule machine virtuelle, HDFS ne peut pas faire trois copies des blocs de données. Lorsque les blocs sont sous-répliquées, il ya un risque de perte de données, de sorte que la santé du système est mauvais. Bonne chose que vous n'essayez pas d'exécuter des travaux Hadoop production sur un seul nœud. Vous n'êtes pas limité à Java pour vos travaux MapReduce. Ce dernier exemple de MapReduce utilise Hadoop Streaming pour prendre en charge un mappeur écrit en Python et un réducteur utilisant AWK. Non, vous n'avez pas à être un Java-guru pour écrire Map-Reduce Mark Twain n'était pas un grand fan de Cooper. Dans ce cas d'utilisation, Hadoop fournira une critique littéraire simple comparant Twain et Cooper. Le test FleschKincaid calcule le niveau de lecture d'un texte particulier. L'un des facteurs de cette analyse est la longueur moyenne des phrases. Analyser les phrases s'avère plus compliqué que de chercher le caractère de la période. Le package openNLP et le paquet Python NLTK ont d'excellents syntaxes de mots. Par souci de simplicité, l'exemple illustré dans la liste 8 utilisera la longueur du mot comme un substitut au nombre de syllabes dans un mot. Si vous voulez passer à l'étape suivante, implémentez le test FleschKincaid dans MapReduce, parcourez le Web et calculez les niveaux de lecture de vos sites d'actualité préférés. Liste 8. Une critique littéraire mappeur à base de Python La sortie du mappeur pour le mot Twain serait: 5 0. Les longueurs de mots numériques sont triées dans l'ordre et présentées au réducteur dans l'ordre trié. Dans les exemples présentés dans les listes 9 et 10, le tri des données n'est pas nécessaire pour obtenir la sortie correcte, mais le tri est intégré à l'infrastructure MapReduce et se produira de toute façon. Liste 10. Un réducteur AWK pour la critique littéraire Liste 10. Exécution d'un mappeur Python et réducteur AWK avec Hadoop Streaming Les fans de Mark Twain peuvent se détendre en sachant que Hadoop trouve Cooper pour utiliser des mots plus longs et avec un écart type choquant. Cela suppose bien entendu que les mots plus courts sont meilleurs. Let's move on, next up est d'écrire des données dans HDFS à Informix et DB2. Utiliser Sqoop pour écrire des données à partir de HDFS dans Informix, DB2 ou MySQL via JDBC Le projet Sqoop Apache est un utilitaire open-source basé sur JDBC Hadoop à base de données de mouvement de données. Sqoop a été créé à l'origine dans un hackathon à Cloudera, puis ouvert source. Le transfert de données de HDFS vers une base de données relationnelle est un cas d'utilisation courant. HDFS et Map-Reduce sont parfaits pour faire du travail lourd. Pour les requêtes simples ou un magasin de back-end pour un site Web, mettre en cache la sortie Map-Reduce dans un magasin relationnel est un bon motif de conception. Vous pouvez éviter de relancer le compte de mot Map-Reduce par juste Sqooping les résultats dans Informix et DB2. Vous avez généré des données sur Twain et Cooper, puis la déplacez dans une base de données, comme indiqué dans la Liste 11. Listing 11. Configuration du pilote JDBC Les exemples présentés dans les Listes 12 à 15 sont présentés pour chaque base de données. Veuillez passer à l'exemple qui vous intéresse, notamment Informix, DB2 ou MySQL. Pour les polyglots de base de données, amusez-vous en faisant tous les exemples. Si votre base de données de choix n'est pas inclus ici, il ne sera pas un grand défi de faire ces échantillons de travail ailleurs. Liste 12. Utilisateurs Informix: Sqoop écrit les résultats du comptage de mots à Informix Listing 13. Utilisateurs Informix: Sqoop écrit les résultats du comptage de mots à Informix Listing 14. Utilisateurs DB2: Sqoop écrit les résultats du comptage de mots à DB2 Listing 15 Les utilisateurs de MySQL: Sqoop écrire les résultats du comptage de mots à MySQL Importer des données dans HDFS à partir de Informix et DB2 avec Sqoop Insérer des données dans Hadoop HDFS peut également être accompli avec Sqoop. La fonctionnalité bidirectionnelle est contrôlée via le paramètre import. Les exemples de bases de données qui viennent avec les deux produits ont quelques ensembles de données simples que vous pouvez utiliser à cette fin. La liste 16 montre la syntaxe et les résultats pour Sqooping de chaque serveur. Pour les utilisateurs MySQL, veuillez adapter la syntaxe à partir des exemples Informix ou DB2 qui suivent. Listing 16. Importation de Sqoop depuis la base de données exemple Informix vers HDFS Pourquoi y a-t-il quatre fichiers différents contenant chacun une partie des données Sqoop est un utilitaire hautement parallélisé. Si un cluster de 4000 nœuds exécutant Sqoop effectuait une importation à plein régime depuis une base de données, les connexions 4000 ressembleraient beaucoup à une attaque de déni de service par rapport à la base de données. Sqoops limite de connexion par défaut est quatre connexions JDBC. Chaque connexion génère un fichier de données dans HDFS. Ainsi les quatre fichiers. Ne vous inquiétez pas, vous verrez comment Hadoop fonctionne à travers ces fichiers sans aucune difficulté. L'étape suivante consiste à importer une table DB2. Comme indiqué dans la liste 17, en spécifiant l'option - m 1, une table sans clé primaire peut être importée et le résultat est un fichier unique. Listing 17. Importation de Sqoop à partir d'une base de données exemple DB2 vers HDFS Utilisation de Hive: jointure de données Informix et DB2 Il existe un cas d'utilisation intéressant pour joindre des données d'Informix à DB2. Pas très excitant pour deux tables triviales, mais une énorme victoire pour plusieurs téraoctets ou petabytes de données. Il existe deux approches fondamentales pour joindre différentes sources de données. Laisser les données au repos et utiliser la technologie de fédération, plutôt que de déplacer les données vers un seul magasin pour effectuer la jointure. L'économie et les performances de Hadoop font déplacer les données dans HDFS et effectuer le travail lourd avec MapReduce un choix facile. Les limitations de bande passante réseau créent une barrière fondamentale si vous essayez de joindre des données au repos avec une technologie de style fédération. Hive fournit un sous-ensemble de SQL pour fonctionner sur un cluster. Il ne fournit pas de sémantique de transaction. Il ne remplace pas Informix ou DB2. Si vous avez un levage lourd sous forme de jointures de table, même si vous avez des tables plus petites mais que vous devez faire de mauvais produits cartésiens, Hadoop est l'outil de choix. Pour utiliser le langage de requête Hive, un sous-ensemble de SQL appelé Hiveql table metadata est requis. Vous pouvez définir les métadonnées contre les fichiers existants dans HDFS. Sqoop fournit un raccourci pratique avec l'option create-hive-table. Les utilisateurs de MySQL devraient se sentir libres d'adapter les exemples présentés dans la liste 18. Un exercice intéressant serait de joindre MySQL, ou toute autre table de base de données relationnelle, à de grands tableurs. Listing 18. Joindre la table informix. customer à la table db2.staff Il est beaucoup plus joli lorsque vous utilisez Hue pour une interface graphique de navigateur, comme le montrent les figures 9, 10 et 11. Figure 9. Hue Beeswax GUI for Hive in CDH4 , Visualiser la requête Hiveql Figure 10. Hue Beeswax GUI for Hive, visualiser la requête Hiveql Figure 11. Hue Beeswax navigateur graphique, visualiser Informix-DB2 join result Utilisation de Pig: Jointure de données Informix et DB2 Pig est un langage procédural. Tout comme Hive, sous les couvertures il génère MapReduce code. La facilité d'utilisation de Hadoop continuera à s'améliorer à mesure que de nouveaux projets deviennent disponibles. Bien que certains d'entre nous aiment vraiment la ligne de commande, il existe plusieurs interfaces utilisateur graphiques qui fonctionnent très bien avec Hadoop. La liste 19 montre le code Pig qui est utilisé pour joindre la table customer et la table staff de l'exemple précédent. Exemple 19. Exemple de Pig pour joindre la table Informix à la table DB2 Comment choisir Java, Hive ou Pig Vous disposez de plusieurs options pour la programmation de Hadoop et il est préférable de consulter le cas d'utilisation pour choisir le bon outil pour le job . Vous n'êtes pas limité à travailler sur des données relationnelles, mais cet article est axé sur Informix, DB2 et Hadoop jouer bien ensemble. L'écriture de centaines de lignes en Java pour implémenter un hash-join de style relationnel est une perte totale de temps puisque cet algorithme Hadoop MapReduce est déjà disponible. Comment choisissez-vous? C'est une question de préférence personnelle. Certains comme les opérations de codage dans SQL. Certains préfèrent le code de procédure. Vous devez choisir la langue qui vous rendra le plus productif. Si vous avez plusieurs systèmes relationnels et souhaitez combiner toutes les données avec de grandes performances à un prix bas, Hadoop, MapReduce, Hive et Pig sont prêts à vous aider. Ne supprimez pas vos données: Rouler une partition de Informix en HDFS La plupart des bases de données relationnelles modernes peuvent partitionner des données. Un cas d'utilisation courant est la partition par période. Une fenêtre fixe de données est stockée, par exemple un intervalle de 18 mois, après lequel les données sont archivées. La capacité de partition détachée est très puissante. Mais après la partition est détachée ce que l'on fait avec les données Tape archives de données anciennes est un moyen très coûteux de jeter les anciens octets. Une fois déplacé vers un support moins accessible, les données sont très rarement accessibles à moins qu'il n'y ait une exigence de vérification légale. Hadoop offre une meilleure alternative. Le déplacement des octets d'archivage de l'ancienne partition en Hadoop fournit un accès haute performance avec un coût beaucoup plus faible que la conservation des données dans le système transactionnel original ou datamartdatawarehouse. Les données sont trop anciennes pour être de valeur transactionnelle, mais sont toujours très précieuses pour l'organisation pour l'analyse à long terme. Les exemples Sqoop montrés précédemment fournissent les bases de la façon de déplacer ces données d'une partition relationnelle vers HDFS. Fuse - Accéder à vos fichiers HDFS via NFS Les données de fichier InformixDB2flat dans HDFS sont accessibles via NFS, comme illustré dans la Liste 20. Ceci fournit des opérations en ligne de commande sans utiliser l'interface hadoop fs - yadayada. Du point de vue de l'utilisation de la technologie, NFS est très limité dans un environnement Big Data, mais les exemples sont inclus pour les développeurs et les données moins importantes. Liste 20. Configuration du fusible - accédez à vos données HDFS via NFS Flume - créez un fichier prêt à charger Flume la prochaine génération ou flume-ng est un chargeur parallèle haute vitesse. Les bases de données ont des chargeurs à grande vitesse, ainsi comment fonctionnent bien ensemble Le cas d'utilisation relationnelle pour Flume-ng est la création d'un fichier prêt à charger, localement ou à distance, de sorte qu'un serveur relationnel peut utiliser son chargeur haute vitesse. Yes, this functionality overlaps Sqoop, but the script shown in Listing 21 was created at the request of a client specifically for this style of database load. Listing 21. Exporting HDFS data to a flat file for loading by a database Oozie - adding work flow for multiple jobs Oozie will chain together multiple Hadoop jobs. There is a nice set of examples included with oozie that are used in the code set shown in Listing 22. Listing 22. Job control with oozie HBase, a high-performance key-value store HBase is a high-performance key-value store. If your use case requires scalability and only requires the database equivalent of auto-commit transactions, HBase may well be the technology to ride. HBase is not a database. The name is unfortunate since to some, the term base implies database. It does do an excellent job for high-performance key-value stores. There is some overlap between the functionality of HBase, Informix, DB2 and other relational databases. For ACID transactions, full SQL compliance, and multiple indexes a traditional relational database is the obvious choice. This last code exercise is to give basic familiarity with HBASE. It is simple by design and in no way represents the scope of HBases functionality. Please use this example to understand some of the basic capabilities in HBase. HBase, The Definitive Guide, by Lars George, is mandatory reading if you plan to implement or reject HBase for your particular use case. This last example, shown in Listings 23 and 24, uses the REST interface provided with HBase to insert key-values into an HBase table. The test harness is curl based. Listing 23. Create an HBase table and insert a row Listing 24. Using the HBase REST interface Conclusion Wow, you made it to the end, well done This is just the beginning of understanding Hadoop and how it interacts with Informix and DB2. Here are some suggestions for your next steps. Take the examples shown previously and adapt them to your servers. Youll want to use small data since there isnt that much space in the virtual image. Get certified as an Hadoop Administrator. Visit the Cloudera site for courses and testing information. Get certified as a Hadoop Developer. Start up a cluster using the free edition of Cloudera Manager. Get started with IBM Big Sheets running on top of CDH4. Downloadable resources Related topics


No comments:

Post a Comment