Manipulation des mégadonnées pour le plaisir et le profit Partie 3

Manipulation des mégadonnées pour le plaisir et le profit Partie 3

Il y a eu deux articles précédents dans cette série, que vous voudrez peut-être lire en premier si vous ne les avez pas encore lus; Manipulation de Big Data pour le plaisir et le profit Partie 1 et Big Data Manipulation pour le plaisir et le profit Partie 2.

Dans cette série, nous discutons de diverses idées et approches pratiques pour gérer les mégadonnées, ou plus spécifiquement, la transformation, la transformation, le manging, la munite, l'analyse, la dispute, la transformation et la manipulation des données sur la ligne de commande Linux.

Ce troisième article de la série continuera d'explorer des outils bash qui peuvent nous aider lors du traitement et de la manipulation de Big Data à base de texte (ou dans certains cas binaires). Comme mentionné dans les articles précédents, la transformation des données en général est un sujet semi-débutant car il existe des centaines d'outils pour chaque format de texte particulier. N'oubliez pas que l'utilisation des outils bash peut parfois ne pas être la meilleure solution, car un outil standard peut faire un meilleur travail. Cela dit, cette série est spécifiquement pour toutes ces (nombreuses) autres fois où aucun outil n'est disponible pour obtenir vos données au format de votre choix.

Enfin, si vous voulez en savoir plus sur les raisons pour lesquelles la manipulation des mégadonnées peut être à la fois amusante et rentable… veuillez lire d'abord la partie 1.

Dans ce tutoriel, vous apprendrez:

  • Des techniques supplémentaires de big data / analyse / manipulation / manipulation / transformation
  • Quels outils bash sont disponibles pour vous aider, en particulier pour les applications de texte
  • Divers exemples, montrant différentes méthodes et approches
Manipulation des mégadonnées pour le plaisir et le profit Partie 3

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é


Exemple 1: WC, tête et vi - Exploration des données

Pour cet exemple, nous travaillerons avec un fichier de statut JSON, créé par Wikipedia dans le cadre de leurs vidages de données (ref.wikimedia.org / enwiki /)

wget https: // décharge.wikimedia.org / Enwiki / 20201020 / Dumpstatus.JSON $ head -C100 Dumpstatus.JSON "Version": "0.8 "," Jobs ": " PagereStrictionStable ": " Status ":" Done "," Files ": " Enwiki-20201020-p $ WC -l Dumpstatus.JSON 1 

Le wget La commande récupère le fichier pour nous (cette commande est également pratique si vous devez télécharger un grand ensemble de fichiers de données et vous faire automatiser sur votre ligne de commande), et le tête -c100 montre les 100 premiers caractères du fichier. C'est un excellent moyen de vérifier rapidement la tête supérieure du fichier.

Si le fichier était en quelque sorte des données binaires, en utilisant le tête -c100 La commande ne fera pas trop de gâchis dans votre terminal, et si les lignes sont très longues (comme c'est le cas pour ce fichier), cette commande garantit que nous ne verrons pas beaucoup de pages de texte de défilement passant par.

Le wc -l La commande nous montre le nombre de lignes.

Avant de commencer à travailler avec des mégadonnées, c'est toujours une bonne idée de consulter le contenu du fichier avec lequel vous travaillez. J'utilise et préfère personnellement vi, Mais vous pouvez n'importe quel éditeur de texte qui vous semble confortable pour vous. L'un des avantages de vi est-ce excellent pour ouvrir et modifier des fichiers très volumineux. Ouvrez le fichier et jetez un coup d'œil: combien de temps sont les lignes, quel type de données est-ce, etc.?

Il est intéressant de noter ici vi, Même s'il a une grande courbe d'apprentissage, est également très puissant en ce qui concerne les opérations en vrac. Par exemple, il peut être plus rapide de générer un fichier de ligne d'un million de lignes en exécutant simplement quelques commandes VI à l'intérieur de VI puis pour écrire un petit script pour faire de même. Un grand aspect de la courbe d'apprentissage de VI est qu'il a tendance à grandir avec vous, au fur et à mesure que vous avez besoin de méthodes ou de procédures supplémentaires.

Aussi, en utilisant seulement deux commandes (tête -c100 et wc -l), en notant le nom de fichier et en vérifiant rapidement avec vi Nous avons déjà appris une myriade de choses:

  1. Ceci est un fichier JSON (.Extension JSON)
  2. Ce fichier a une (s) longue ligne (VI, appuyez sur la touche d'extrémité et le compteur de notes en bas à droite, présent sur de nombreuses installations VI): 110365 caractères
  3. Ce fichier a une seule ligne (WC -L)
  4. Le fichier est très structuré (tête -C100)

Bien que ce soit un exemple simple, l'idée est de souligner que si nous avons passé un peu de recherche sur nos données source, nous pouvons plus facilement travailler avec elle et comprendre comment le transformer ou le manipuler mieux au format dans lequel nous aimerions qu'il soit. Cette approche ou cette méthodologie devrait devenir une seconde nature pour l'ingénieur de données.

La prochaine partie importante du processus de manipulation des mégadonnées consiste à discerner quel outil aidera le plus avec la tâche à accomplir. Si nous faisions des extractions génériques ou des manipulations à ces données, nous voudrions probablement rechercher d'abord un outil compatible JSON, ou même un outil spécialement conçu pour JSON. Il existe de nombreux outils de ce type, dont de nombreux gratuits et open source.

Deux bons points de départ sont la recherche sur Github.com (par exemple, tapez `` JSON Edit '' pour voir quels outils génériques sont là-bas, ou quelque chose de plus spécifique comme «JSON Tree» pour trouver un outil spécifique à la révision de l'arborescence JSON), et tout major de moteur de recherche de recherche. Il y a plus de 100 millions de référentiels sur GitHub et vous trouverez presque toujours au moins une ou deux choses qui se rapportent directement à votre tâche ou à votre projet.

Pour GitHub spécifiquement, vous voudrez garder les mots clés courts et génériques pour avoir le nombre maximum de correspondances pertinentes. N'oubliez pas que bien que Github possède en effet plus de 100 millions de référentiels, il est très petit par rapport aux principaux moteurs de recherche et donc une recherche trop spécifique (plus de 2 à 3 mots, ou des mots détaillés dans une certaine mesure) entraînera souvent une mauvaise ou non résultats.

«JSON» (pour une impression générique du «marché» gratuit), «JSON Edit» et «JSON Tree» sont tous de bons exemples. `` JSON Tree Builder '' et «Json Tree Edit» sont limites, et plus précis que cela ne peut renvoyer aucun résultat utile.

Pour ce projet, nous allons faire semblant d'avoir analysé tous les outils JSON disponibles et n'a trouvé aucun pour ce que nous voulions faire: nous voulons changer tout pour _ et " pour =, et retirer tous les espaces. Nous allons ensuite nourrir ces données à notre robot de l'IA fictif qui est programmé pour corriger les erreurs dans JSON. Nous voulons avoir brisé JSON pour voir si le robot fonctionne bien.

Transformons ensuite certaines de ces données et modifions la syntaxe JSON à l'aide de SED.



Exemple 2: SED

L'éditeur de flux (SED) est un utilitaire puissant qui peut être utilisé pour une grande variété de tâches de manipulation des mégadonnées, en particulier en utilisant des expressions régulières (regex). Je propose de commencer par lire notre article Advanced Bash RegEx avec des exemples, ou Bash Regexps pour les débutants avec des exemples si vous commencez simplement avec des expressions SED et régulières. Pour en savoir un peu plus sur les expressions régulières en général, vous pouvez également trouver des expressions régulières Python avec des exemples qui intéressent.

Selon notre plan d'approche, nous changerons tout pour _ et " pour =, et retirer tous les espaces. C'est facile à faire avec SED. Pour commencer, nous prendrons un petit échantillon du plus grand fichier de données pour tester notre solution. C'est une pratique courante lors de la gestion de grandes quantités de données, comme on voudrait 1) assurez-vous que la solution fonctionne avec précision, 2) avant de modifier le fichier à portée de main. Testons:

$ echo '"status": "Done' | SED 'S | | _ | g; S |" | = | g' _ = status =: = DID 

Super, il semble que notre solution fonctionne partiellement. Nous avons changé pour _ et " pour =, mais n'ont pas encore supprimé les espaces. Regardons d'abord l'instruction SED. Le s La commande dans la commande globale SED (encapsulée par des citations uniques) substitue un peu de texte par un autre, et c'est conscient de l'expression régulière. Nous avons ainsi changé les deux personnages que nous voulions changer dans une approche basée sur de. Nous avons également effectué le changement sur l'ensemble de l'entrée en utilisant le g (globale) Option pour sed.

En d'autres termes, on pourrait écrire cette instruction SED comme: substitut | de | à | global, ou s | f | t | g (dans quel cas F serait remplacé par t). Testons ensuite la suppression des espaces:

$ echo '"Status": "Done' | SED 'S | | _ | g; S |" | = | g; S | * || g '_ = status =: = fait 


Notre commande de substitut finale (S | * || g) Comprend une expression régulière qui prendra n'importe quel nombre (*) des espaces et le remplacer en «rien» (correspondant au champ vide «au champ).

Nous savons maintenant que notre solution fonctionne correctement, et nous pouvons l'utiliser sur le fichier complet. Allons-y et faisons-le:

$ sed -i's | | _ | g; s | "| = | g 'Dumpstatus.json 

Ici, nous utilisons le -je option pour sed et passer le fichier (décolleté.json) comme option à la fin de la ligne. Cela fera un en ligne (-je) Exécution de la commande SED directement sur le fichier. Aucun fichier temporaire ou intermédiaire n'est requis. Nous pouvons alors utiliser vi encore pour vérifier que notre solution a fonctionné correctement. Nos données sont maintenant prêtes pour notre robot de l'IA fictif pour montrer que ses compétences de réparation JSON!

Il est également souvent une bonne idée de prendre rapidement une copie du fichier avant de commencer à y travailler, ou de travailler avec un fichier temporaire si nécessaire, bien que dans ce cas, vous pouvez préférer un sed 's |… |… |' infile> Outfile commande basée.

Apprendre à utiliser SED et les expressions régulières présente bien de nombreux avantages, et l'un des principaux avantages est que vous pourrez gérer plus facilement les grandes données textuelles en utilisant sed pour le transformer / le manipuler.

Conclusion

Si vous n'avez pas lu nos deux articles précédents dans cette série et que vous trouvez le sujet intéressant, je vous encourage fortement à le faire. Les liens pour ceux-ci sont dans l'introduction ci-dessus. L'une des raisons en est l'avertissement mis en évidence dans les deux premiers articles pour gérer votre temps et votre engagement avec la technologie lorsqu'il s'agit de gérer les mégadonnées, et / ou d'autres sujets informatiques complexes en général, comme un système d'IA complexe. La tension de l'esprit sur une base continue a tendance à produire de mauvais résultats à long terme, et les projets complexes (trop) tendent vers cela. En révision de ces articles, vous pouvez également en savoir plus sur d'autres outils à utiliser pour la manipulation des mégadonnées.

Pour cet article, nous avons expliqué comment les ingénieurs de données devraient chercher à comprendre les données sur lesquelles ils travaillent bien, afin que la transformation et le mangage soient plus faciles et plus simples. Nous avons également examiné divers outils qui peuvent nous aider à en savoir plus sur les données et à les transformer.

Avez-vous trouvé de grands ensembles de données intéressants ou développé de grandes stratégies de gestion des mégadonnées (technique et / ou style de vie / approche)? Si oui, laissez-nous un commentaire!

Tutoriels Linux connexes:

  • Manipulation de Big Data pour le plaisir et le profit Partie 1
  • 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
  • Boucles imbriquées dans les scripts bash
  • Masterring Bash Script Loops
  • Choses à faire après l'installation d'Ubuntu 20.04 Focal Fossa Linux
  • Mint 20: Mieux que Ubuntu et Microsoft Windows?
  • Comment doubler Kali Linux et Windows 10
  • Ubuntu 20.04 astuces et choses que vous ne savez peut-être pas