Manipulation de Big Data pour le plaisir et le profit Partie 1

Manipulation de Big Data pour le plaisir et le profit Partie 1

Ces jours-ci, tout le monde semble parler de Big Data - mais qu'est-ce que cela signifie vraiment? Le terme est utilisé de manière assez ambiguë dans une variété de situations. Aux fins de cet article et de la série, nous ferons référence aux mégadonnées chaque fois que nous entendons «une grande quantité de données textuelles, dans n'importe quel format (par exemple un texte ASCII, XML, HTML ou tout autre lienté humaine ou semi -Les format humain-lisible). Certaines techniques montrées peuvent également fonctionner pour les données binaires, lorsqu'elles sont utilisées avec soin et connaissances.

Alors, pourquoi le plaisir (titre de référence)?

Gestionner les gigaoctets de données textuelles brutes dans un script rapide et efficace, ou même utiliser une commande à une ligne (voir Linux Complex Bash pour bien fonctionner et peut automatiser les choses. Nous ne pouvons jamais apprendre suffisamment sur la façon de gérer les mégadonnées; La prochaine analyse de texte difficile sera toujours au coin de la rue.

Et pourquoi profiter?

De nombreuses données du monde sont stockées dans de grands fichiers plats textuels. Par exemple, saviez-vous que vous pouvez télécharger la base de données complète de Wikipedia? Le problème est que souvent ces données sont formatées dans un autre format comme HTML, XML ou JSON, ou même les formats de données propriétaires! Comment l'obtenir d'un système à un autre? Savoir analyser les mégadonnées et bien l'analyser met toute la puissance à bout de bout. Simple? Souvent, la réponse est «non», et donc elle aide si vous savez ce que vous faites. Direct? Idem. Rentable? Régulièrement, oui, surtout si vous devenez bon à manipuler et à utiliser les mégadonnées.

La manipulation des mégadonnées est également appelée «tapage de données». J'ai commencé à travailler avec Big Data il y a plus de 17 ans, alors j'espère qu'il y a une chose ou deux que vous pouvez ramasser de cette série. En général, la transformation des données en tant que sujet est semi-débutant (des centaines d'outils tiers sont disponibles pour chaque format de texte particulier), mais je me concentrerai sur un aspect spécifique qui s'applique à l'analyse des données textuelles; Utilisation de la ligne de commande bash pour analyser tout type de données. Parfois, ce n'est peut-être pas la meilleure solution (je.e. Un outil pré-créé peut faire un meilleur travail), mais cette série est spécifiquement pour tous ces (plusieurs) autres fois où aucun outil n'est disponible pour obtenir vos données «juste correctes».

Dans ce tutoriel, vous apprendrez:

Manipulation de Big Data pour le plaisir et le profit Partie 1
  • Comment démarrer avec les mégadonnées en train de s'effondrer / analyse / manutention / manipulation / transformation
  • Quels outils bash sont disponibles pour vous aider, en particulier pour les applications de texte
  • Exemples montrant différentes méthodes et approches

Exigences et conventions logicielles utilisées

Exigences logicielles et conventions de ligne de commande Linux
Catégorie Exigences, conventions ou version logicielle utilisée
Système Indépendant de la distribution Linux
Logiciel Ligne de commande bash, système basé sur Linux
Autre Toute utilité qui n'est pas incluse dans le shell bash par défaut peut être installée en utilisant Sudo Apt-Get Install Utility-Name (ou Installation de miam pour les systèmes basés sur Redhat)
Conventions # - nécessite que les commandes Linux soient exécutées avec des privilèges racine soit directement en tant qu'utilisateur racine, soit par l'utilisation de Sudo commande
$ - exige que les commandes Linux soient exécutées en tant qu'utilisateur régulier non privilégié

Supposons que vous ayez les suivants prêts;
- R: Fichier d'entrée de données source (textuel), dans n'importe quel format (JSON, HTML, MD, XML, Texte, TXT, CSV ou similaire)
- B: une idée de la façon dont les données cibles doivent rechercher votre application cible ou une utilisation directe

Vous avez déjà recherché des outils disponibles pertinents pour le format de données source et n'avez trouvé aucun outil préexistant qui peut vous aider à passer de A à B.

Pour de nombreux entrepreneurs en ligne, c'est le point où souvent, l'aventure se termine. Pour les personnes expérimentées avec la manipulation des mégadonnées, c'est le point où commence l'aventure amusante de manipulation de Big Data :-).

Il est important de comprendre quel outil peut vous aider à faire quoi et comment vous pouvez utiliser chaque outil pour réaliser votre prochaine étape dans le processus de transformation des données, donc pour donner un coup de pied à cette série, je chercherai un par un, à Beaucoup d'outils disponibles en bash qui peuvent aider. Nous le ferons sous la forme d'exemples. Nous allons commencer par des exemples faciles, donc si vous avez déjà une certaine expérience, vous voudrez peut-être parcourir celles-ci et aller de l'avant pour d'autres articles dans cette série.

Exemple 1: fichier, chat, tête et queue

J'ai dit que nous commencerions simple, alors allons d'abord les bases. Nous devons comprendre comment nos données source sont structurées. Pour cela, nous utilisons les imbéciles déposer, chat, diriger et queue. Pour cet exemple, j'ai téléchargé une partie aléatoire de la base de données Wikipedia.

$ ls enwiki-latest-pages-articles-multistream-index19.TXT-P30121851P31308442.bz2 $ bzip2 -d enwiki-latest-pages-articles-multistream-index19.TXT-P30121851P31308442.bz2 $ ls enwiki-latest-pages-articles-multistream-index19.TXT-P30121851P31308442 $ FILE ENWIKI-LATEST-PAGES-Articles-MultiStream-Index19.TXT-P30121851P31308442 ENWIKI-LATEST-PAGES-Articles-MultiStream-Index19.TXT-P30121851P31308442: Texte UNICODE UTF-8 $ 


Après avoir décompressé le téléchargement bz2 (bzip2) Fichier, nous utilisons le déposer commande d'analyser le contenu du fichier. Le fichier est basé sur du texte, le format UNICODE UTF-8, comme confirmé par le Texte UTF-8 Unicode sortie après le nom de fichier. Super, nous pouvons travailler avec cela; c'est «texte» et que tout ce que nous devons savoir pour le moment. Jetons un coup d'œil au contenu en utilisant chat, diriger et queue:

$ cat enwiki-latest-pages-articles-multistream-index19.TXT-P30121851P31308442 | Tête -N296016 | Tail -N1 269019710: 31197816: Linux est mon ami 

Je voulais illustrer comment utiliser chat, Mais cette commande aurait également pu être construite plus simplement comme:

$ head -N296016 enwiki-latest-pages-articles-mulStream-index19.TXT-P30121851P31308442 | Tail -N1 269019710: 31197816: Linux est mon ami 

Nous avons échantillonné un, ehrm, aléatoire… (ou pas si aléatoire pour ceux qui me connaissent;)… ligne du fichier pour voir quel type de texte est là. Nous pouvons voir qu'il semble y avoir 3 champs, séparés par :. Les deux premiers ont l'air numériques, le troisième texte basé. C'est un bon moment pour soulever le fait que l'on doit être prudent avec ce genre d'hypothèses. L'hypothèse (et / ou la présomption) est la mère de toutes les erreurs. Il est souvent logique de prendre les mesures suivantes, surtout si vous êtes moins familiarisé avec les données;

  1. Recherchez la structure des données en ligne - y a-t-il une légende officielle des données, définition de la structure des données?
  2. Recherchez un exemple en ligne si les données source sont disponibles en ligne. Par exemple, pour l'exemple ci-dessus, on pourrait rechercher Wikipedia pour «269019710», «31197816» et «Linux est mon ami». Sont les références à ces nombres? Ces nombres sont-ils utilisés dans les URL et / ou les identifiants d'articles, ou se réfèrent-ils à autre chose, etc.

La raison en est d'en savoir plus sur les données, et en particulier sa structure. Avec cet exemple, tout semble assez facile, mais si nous sommes honnêtes avec nous-mêmes, nous ne savons pas ce que signifient les deux premiers chiffres et nous ne savons pas si le texte «Linux est mon ami» fait référence à un titre d'article, Titre DVD , ou couverture de livre, etc. Vous pouvez commencer à voir comment la manipulation des mégadonnées peut être l'aventure, et les structures de données peuvent et deviennent beaucoup plus complexes que ce.

Disons un instant que nous actions les éléments 1 et 2 ci-dessus et nous avons appris davantage sur les données et sa structure. Nous avons appris (fictivement) que le premier numéro est un groupe de classification pour toutes les œuvres littéraires, et la seconde est un ID d'article spécifique et unique. Nous avons également appris de nos recherches : est en effet un séparateur de champ clair et établi qui ne peut être utilisé que pour la séparation de champs. Enfin, le texte du troisième champ répertorie le titre réel de l'œuvre littéraire. Encore une fois, ce sont des définitions inventées, ce qui nous aidera à continuer d'explorer les outils que nous pouvons utiliser pour la manipulation des mégadonnées.

Si aucune donnée n'est disponible sur les données ou sa structure, vous pouvez commencer par faire des hypothèses sur les données (par la recherche) et les noter, puis vérifier les hypothèses contre toutes les données disponibles pour voir si les hypothèses sont. Régulièrement, sinon souvent, c'est le seul moyen de vraiment commencer à traiter les mégadonnées. Parfois, une combinaison des deux est disponible; Certaines description de syntaxe légère combinée à la recherche et aux hypothèses légères sur les données, par exemple les séparateurs de champ, les chaînes de terminaison (souvent \ n, \ r, \ r \ n, \\ 0) etc. Plus vous obtenez à droite, plus vos données seront plus précises et plus précis!

Ensuite, nous vérifierons à quel point nos règles découvertes sont précises. Vérifiez toujours votre travail avec les données réelles!

Exemple 2: Grep et WC

Dans l'exemple 1, nous avons conclu que le premier champ était le groupe de classification pour toutes les œuvres littéraires. Essayons logiquement de vérifier cela…

$ grep '269019710' enwiki-latest-pages-articles-multistream-index19.TXT-P30121851P31308442 | wc -l 100 $ wc -l enwiki-latest-pages-articles-mulStream-index19.TXT-P30121851P31308442 329956 ENWIKI-LATEST-PAGES-Articles-MultiStream-Index19.TXT-P30121851P31308442 


Hmmm. Nous avons 100 œuvres littéraires au total dans un fichier avec environ 330 000 lignes. Cela ne semble pas très juste. Pourtant, comme nous n'avons téléchargé qu'une petite partie de la base de données Wikipedia, c'est toujours possible… Vérifions l'élément suivant; Un deuxième champ d'identification unique.

$ grep '31197816' enwiki-latest-pages-articles-multistream-index19.TXT-P30121851P31308442 269019710: 31197816: Linux est mon ami 

Très cool. À première vue, cela semblerait être précis car il n'y a qu'une seule ligne qui correspond.

Le troisième champ ne serait pas si facile à vérifier, bien que nous puissions vérifier si le texte est unique au moins:

$ grep --binary-files = text 'Linux est mon ami' Enwiki-Latest-pages-Articles-MultiStream-Index19.TXT-P30121851P31308442 269019710: 31197816: Linux est mon ami 

OK, donc le titre semble unique.

Notez également qu'une nouvelle option a été ajoutée au Grep à savoir --Files binaires = texte, qui est une option très importante à utiliser sur tous grep commandes, à partir d'aujourd'hui, pour chaque grep vous commandez d'écrire ci-après, dans toutes vos données de mangling (encore un autre terme applicable) fonctionne. Je ne l'ai pas utilisé dans le précédent grep Commandes pour économiser sur la complexité. Alors pourquoi est-il si important que vous puissiez demander? La raison en est que souvent, lorsque les fichiers textuels contiennent des caractères spéciaux, en particulier des outils comme Grep peuvent voir les données comme binaires alors qu'elle est en fait du texte.

Parfois, cela conduit à grep ne fonctionne pas correctement, et les résultats ne sont pas définis. Chaque fois que j'écris un grep, presque toujours (sauf si je suis assez confiant que les données ne sont pas binaires) --Files binaires = texte sera inclus. Il garantit simplement que si les données semblent binaires, ou même parfois sont binaires, le grep fonctionnera toujours correctement. Notez que cela est moins préoccupant pour certains autres outils comme sed qui semblent être plus conscients / capables par défaut. Résumé; Utilisez toujours --Files binaires = texte Pour vos commandes Grep.

En résumé, nous avons trouvé un souci de nos recherches; Le nombre dans le premier champ ne semble en aucun cas être toutes les œuvres littéraires répertoriées sur Wikipedia, même s'il s'agit d'un sous-ensemble du total des données, bien qu'il soit possible.

Cela met alors en évidence la nécessité d'un processus de va-et-vient qui fait souvent partie des mégus!). Nous pourrions qualifier cela de «cartographie des mégadonnées» et introduire un autre terme pour plus ou moins le même processus global; Manipulation du Big Data. En résumé, le processus de marche entre les données réelles, les outils avec lesquels vous travaillez et la définition des données, la légende ou la syntaxe font partie intégrante du processus de manipulation des données.



Mieux nous comprenons nos données, mieux nous pouvons les gérer. À un moment donné, la courbe d'apprentissage vers de nouveaux outils diminue progressivement, et la courbe d'apprentissage vers une meilleure compréhension de chaque nouvel ensemble de données géré augmente. C'est le point auquel vous savez que vous êtes un expert en transformation des Big Data, car votre objectif n'est plus sur les outils - que vous connaissez maintenant - mais sur les données elle-même, conduisant à des résultats finaux plus rapides et meilleurs!

Dans la prochaine partie de la série (dont il s'agit du premier article), nous examinerons plus d'outils que vous pouvez utiliser pour la manipulation du Big Data.

Vous pouvez également être intéressé à lire nos pages Web de récupération semi-liées à l'aide de l'article WGet Curl et Lynx, qui montre comment récupérer les pages Web au format HTML et Text / TXT. Utilisez toujours ces connaissances de manière responsable (je.e. Ne surchargez pas les serveurs et ne récupérez pas uniquement le domaine public, pas de droit d'auteur, ou CC-0, etc. Données / pages), et vérifiez toujours s'il existe une base de données / ensemble de données téléchargeable des données qui vous intéressent, qui est très préférée à la récupération de pages Web individuellement.

Conclusion

Dans ce premier article de la série, nous avons défini la manipulation des mégadonnées en ce qui concerne notre série d'articles et avons découvert pourquoi la manipulation des mégadonnées peut être à la fois amusante et gratifiante. On pourrait, par exemple, prendre - dans les limites légales applicables! - un ensemble de données textuels du domaine public grand et utilisez des services publics pour le transformer au format souhaité et publier le même en ligne. Nous avons commencé à regarder divers outils bash qui peuvent être utilisés pour la manipulation des mégadonnées et exploré des exemples basés sur la base de données Wikipedia accessible au public.

Profitez du voyage, mais rappelez-vous toujours que les mégadonnées y ont deux côtés; un côté où vous contrôlez, et… eh bien… un côté où les données contrôlent. Gardez un temps précieux disponible pour la famille, les amis et plus encore (31197816!), avant de se perdre analysant les myriades de big data là-bas!

Lorsque vous êtes prêt à en savoir plus, il y a une manipulation de Big Data pour le plaisir et le profit Partie 2.

Tutoriels Linux connexes:

  • Manipulation des mégadonnées pour le plaisir et le profit Partie 3
  • Manipulation de Big Data pour le plaisir et le profit Partie 2
  • Choses à installer sur Ubuntu 20.04
  • Une introduction à l'automatisation Linux, des outils et des techniques
  • Choses à faire après l'installation d'Ubuntu 20.04 Focal Fossa Linux
  • Boucles imbriquées dans les scripts bash
  • Masterring Bash Script Loops
  • Mint 20: Mieux que Ubuntu et Microsoft Windows?
  • Bases de mathématiques informatiques: binaire, décimal, hexadécimal, octal
  • Ubuntu 20.04 astuces et choses que vous ne savez peut-être pas