应用场景:map side join
工作原理:
通过mapreduce框架将一个文件(本地/HDFS)分发到每一个运行时的task(map task /reduce task)节点上(放到task进程所在的工作目录)
获取的方式: 在我们自己的mapper或者reducer的代码内,直接使用本地文件JAVA ----API 来访问这个文件
示例程序:
- 首先在 job对象中进行指定:
job.addCacheFile(new URI("hdfs://hadoop-server01:9000/cachefile/b.txt"));
//分发一个文件到task进程的工作目录
job.addCacheFile(new URI("hdfs://hadoop-server01:9000/cachefile/b.txt"));
//分发一个归档文件到task进程的工作目录
//job.addArchiveToClassPath(archive);
//分发jar包到task节点的classpath下
//job.addFileToClassPath(jarfile);
- 然后在mapper或者reducer中直接使用:
in = new FileReader("b.txt");
reader =new BufferedReader(in);
String line = reader.readLine()