У меня также было много проблем с кешем рассылки и параметрами отправки.Для меня работают следующие параметры:
Для использования распределенного кэша: для меня было кошмаром получить URL / путь к файлу в HDFS в Map или Reduce, но с символической ссылкой это работало в методе run ()задание
DistributedCache.addCacheFile(new URI(file+"#rules.dat"), conf);
DistributedCache.createSymlink(conf);
и затем читать в заголовке Map или Reduce, перед методами
public static FileSystem hdfs;
, а затем в методе setup () Map или Reduce
hdfs = FileSystem.get(new Configuration()).open(new Path ("rules.dat"));
Для параметров: отправьте некоторые значения в Map или Reduce (это может быть имя файла для открытия из HDFS):
public int run(String[] args) throws Exception {
Configuration conf = new Configuration();
...
conf.set("level", otherArgs[2]); //sets variable level from command line, it could be a filename
...
}
, затем в классе Map или Reduce просто:
int level = Integer.parseInt(conf.get("level")); //this is int, but you can read also strings, etc.