code: public void registerCachedFile(String filePath, String name) throws IOException {
  		if (!this.cacheFile.containsKey(name)) {
  			try {
  				URI u = new URI(filePath);
  				if (!u.getPath().startsWith("/")) {
  					u = new URI(new File(filePath).getAbsolutePath());
  				}
  				FileSystem fs = FileSystem.get(u);
  				if (fs.exists(new Path(u.getPath()))) {
  					this.cacheFile.put(name, u.toString());
  				} else {
  					throw new RuntimeException("File " + u.toString() + " doesn't exist.");
  				}
  			} catch (URISyntaxException ex) {
  				throw new RuntimeException("Invalid path: " + filePath, ex);
  			}
  		} else {
  			throw new RuntimeException("cache file " + name + "already exists!");
  		}
  	}
docs: register cache files in program level
  @param filePath The files must be stored in a place that can be accessed from all workers (most commonly HDFS)
  @param name user defined name of that file
  @throws java.io.IOException