我有一个使用大量输入路径的map reduce作业。因此,我在开始工作时遇到了这个异常:
超出最大jobconf大小:6154861限制:5242880
我意识到max jobconf大小由系统属性控制:
mapred.user.jobconf.limit,默认为5 MB。
除了增加此限制之外,还有办法解决这个问题吗?
答案 0 :(得分:1)
除非你准备好改变源本身,否则我不这么认为。根据JobTracker的来源,如果未由用户明确指定,则这是允许的最大值。
/** 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";
如果您未通过mapred.user.jobconf.limit
指定任何值,则会使用5*1024*1024L
:
MAX_JOBCONF_SIZE = conf.getLong(MAX_USER_JOBCONF_SIZE_KEY, MAX_JOBCONF_SIZE);
答案 1 :(得分:1)
或者,如果可能,您可以尝试使用DistributedCache
。
您可以将它们放入文件并将该文件添加到JobConf
,而不是将这么多名称值对加载到DistributedCache
中。
这取决于您的应用程序在JobConf
中存储的内容。