我有一個使用大量輸入路徑的map reduce作業。因此我遇到了這個例外,同時開始作業:已超出JobConf大小
超出最大jobconf大小:6154861限制:5242880
我意識到,最大jobconf大小由系統屬性決定:
mapred.user .jobconf.limit默認爲5 MB。
除了增加此限制之外,是否有辦法規避此問題?
我有一個使用大量輸入路徑的map reduce作業。因此我遇到了這個例外,同時開始作業:已超出JobConf大小
超出最大jobconf大小:6154861限制:5242880
我意識到,最大jobconf大小由系統屬性決定:
mapred.user .jobconf.limit默認爲5 MB。
除了增加此限制之外,是否有辦法規避此問題?
我不這麼認爲,除非你準備好改變源本身。根據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);
或者,你可以嘗試,如果能夠利用DistributedCache
。
您可以將它們加載到文件中並將該文件添加到DistributedCache
,而不是將如此多的名稱值對加載到JobConf
中。 這取決於您的應用程序在JobConf
中存儲的內容。