2 votes

Taille de JobConf dépassée

J'ai un travail de réduction de carte qui utilise un très grand nombre de chemins d'entrée. Par conséquent, je rencontre cette exception lors du démarrage de la tâche :

Dépassement de la taille maximale de jobconf : 6154861 limite : 5242880

J'ai réalisé que la taille maximale de jobconf est régie par la propriété du système :

mapred.user.jobconf.limit qui, par défaut, est de 5 Mo.

Y a-t-il un moyen de contourner ce problème autrement qu'en augmentant cette limite ?

1voto

Tariq Points 12826

Je ne pense pas, sauf si vous êtes prêt à changer la source elle-même. Selon la source de JobTracker, c'est la valeur maximale autorisée, si elle n'est pas spécifiée explicitement par l'utilisateur.

/** the maximum allowed size of the jobconf **/
long MAX_JOBCONF_SIZE = 5*1024*1024L;

/** the config key for max user jobconf size **/
public static final String MAX_USER_JOBCONF_SIZE_KEY = "mapred.user.jobconf.limit";

Si vous n'avez pas spécifié de valeur par mapred.user.jobconf.limit puis 5*1024*1024L sera utilisé :

MAX_JOBCONF_SIZE = conf.getLong(MAX_USER_JOBCONF_SIZE_KEY, MAX_JOBCONF_SIZE);

1voto

user319862 Points 216

Vous pouvez également essayer d'utiliser DistributedCache si possible.

Au lieu de charger autant de paires nom-valeur dans JobConf vous pouvez les mettre dans un fichier et ajouter ce fichier à la liste des fichiers de l'UE. DistributedCache . Cela dépend de ce que votre application stocke dans JobConf .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X