programmation map-reduce

a marqué ce sujet comme résolu.

Là comme ça je pense à au moins 4 façons différentes de le savoir :

  • Méthode 1 : ouvrir le fichier avec un éditeur de texte qui affiche les numéros de ligne. Constater que le numéro de ligne change à chaque nouvelle séquence.
  • Méthode 2 : ouvrir le fichier avec un éditeur de texte qui ne wrappe pas les lignes. Constater que les lignes sont plus longues que la largeur de l’écran, et que le premier numéro de chaque ligne suit la série 1, 2, 3...
  • Méthode 3 : ouvrir le fichier dans une console Python, et regarder où se situent les passages à la ligne. Constater que les séquences sont bien conclues par un \n et que le \n n’apparait qu’à la fin de chaque séquence.
  • Méthode 4 : head -n1 fichier.txt, constater que la première ligne du fichier s’affiche sur plusieurs lignes du terminal et correspond bien à la séquence complète.
+1 -0

Ce problème est résolue mais j’ai une autre question par rapport a la question. J’ai déjà ma petite idée.

Je prends le premier utilisateur et je prends ensuite ligne par ligne les autres utilisateurs et je compare les amis en commun. OK ça va marcher.

Mais lorsque je finis pour l’utilisateur 1 je dois faire aussi pour les autres utilisateur or lorsqu’on lis dans un fichier le curseur se déplace donc si je finis pour l’utilisateur 1 j’ai mon curseur qui se retrouve en dernière ligne de mon fichier comment faire pour faire la même opération pour chaque utilisateur? Merci

Utilise la mémoire de ta machine pour stocker les informations d’un utilisateur une fois que tu as parcouru sa ligne. Mais ce ne sera pas adapté pour paralléliser le traitement.

La comparaison dont tu parles devrait plutôt avoir lieu lors du reduce, quand tu regroupes les résultats des différents traitements.

OK mais et si notre fichier est découper en plusieurs block par HDFS et stocker pour le traitement comment on ferais pour pouvoir avoir les amis en commun des couples d’utilisateur.

melo96

Ne t’occupe pas de comment HDFS stocke le fichier. Par défaut il va le découper et stocker 3 copies de chaque bout de fichier sur différentes machines du cluster. L’intérêt d’HDFS c’est de ne pas avoir à se soucier de ça, il le fait pour toi. Quand tu demandes un fichier à HDFS, il s’arrange pour t’en donner le contenu original efficacement.

[edit] Ton problème d’amis en commun est extrêmement similaire à l’exemple canonique de MapReduce : wordcount. Au lieu de compter le nombres d’occurrences de chaque mot dans un texte, tu comptes le nombre d’occurrences d’un même numéro d’utilisateur parmi les amis de PersonneX et PersonneX+1.

+0 -0

Entwanne pour éviter la liste j’utilise fseek pour pouvoir revenir en arrière dans mon fichier est ce une bonne idée dans le cas de l’optimisation?.

melo96

Et si tu arrêtais de penser optimisation dès le départ et que tu essayais plutôt d’avoir un code qui fonctionne ?

+4 -0

Entwanne pour éviter la liste j’utilise fseek pour pouvoir revenir en arrière dans mon fichier est ce une bonne idée dans le cas de l’optimisation?.

melo96

Je crois pas que tu puisses faire ça. T’as compris la base de MapReduce, comment ça fonctionne ?

Tu ne vas pas revenir en arrière dans un fichier. Ton fichier tu l’ouvres une fois pour toute et tu le découpes. Ensuite tu map sur les parties (que t’as découpées), puis tu reduce pour n’obtenir qu’un résultat à partir du résultat du map de chaque partie.

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte