2016-02-21 2 views
1

Puisque certaines données sont partagées entre toutes les fonctions map(), je ne peux pas les générer dans le setup(), puisque chaque setup() correspond à chaque fonction map(), et ce que je veux faire est de pré-produire certaines données et de les stocker quelque part réalisable, puis l'utiliser dans chaque map().Comment puis-je transmettre des données supplémentaires au mappeur?

Comment puis-je le faire? Dites que je fais KNN avec Mapreduce, et je veux utiliser toutes les données de test par map(). Où dois-je stocker ces données de test et les utiliser dans le mappeur?

Merci beaucoup.

+0

Je pense que c'est ce que vous cherchez: http://stackoverflow.com/questions/21239722/hadoop-distributedcache-is-deprecated-what-is-the-preferred-api – vefthym

Répondre

0

Vous pouvez stocker vos données pré-calculées dans HDFS, puis les inclure dans DitributedCache du Job.

https://hadoop.apache.org/docs/r2.6.2/api/org/apache/hadoop/filecache/DistributedCache.html

Tous les fichiers (données, bibliothèques, etc.) dans le DistributedCache seront copiés sur chaque nœud avant une tâche liée au travail a commencé sur elle.

Le cache distribué n'est pas limité aux fichiers dans HDFS, mais les données doivent être disponibles à partir de chaque nœud qui en a besoin (en tant que HDFS).