Quick one. Check this in VectorCache. The key isn't actually used; it just
reads the first Vector in the SequenceFile. I do see code calls it
attempting to, it seems, pass a meaningful key. Everything "works" I guess.
Does it just happen to work because all the files in question just have 1
vector anyway, in which case I just fix the code and move on? or something
deeper to worry about.
/**
* Loads the vector with the specified key from the cache. Returns null
* if nothing is found (up to the caller to handle this accordingly)
*/
public static Vector load(Writable key, Configuration conf) throws
IOException {
URI [] files = DistributedCache.getCacheFiles(conf);
if (files == null || files.length < 1) {
return null;
}
return load(key, conf, new Path(files[0].getPath()));
}
/**
* Loads a Vector from the specified path
*/
public static Vector load(Writable key, Configuration conf, Path input)
throws IOException {
FileSystem fs = FileSystem.get(conf);
SequenceFile.Reader reader = new SequenceFile.Reader(fs, input, conf);
VectorWritable retval = new VectorWritable();
reader.next(key, retval);
reader.close();
return retval.get();
}