我有一个文件列表,我想添加使用分布式缓存设施。不同的任务需要不同的文件。例如,reduce 1需要文件a,reduce 2需要文件b,依此类推。在job conf中,这两个文件都是使用distributedcache.addcachefile()方法添加的。在reduce class configure方法中,我使用distributedcache.getcachefiles()获取文件。有没有可能我的reduce 1内存中只有文件a,reduce 2内存中只有文件b。或者在reduce任务开始之前,两个文件都被添加到内存中。
如果我明白这一点,我可以使用分布式缓存为我的程序。我关心的是可伸缩性。文件很大。因此reduce任务不能同时在内存中包含这两个文件。但可以保存其中一个文件。
请帮忙!!!
谢谢
1条答案
按热度按时间rslzwgfq1#
返回缓存文件的方法,返回按添加顺序缓存的文件的所有名称的数组。因此,可以告诉reducer 1获取数组[0]文件,而reduce 2获取数组[1]文件。还建议此缓存中不要有非常大的文件。