pd.txt 文件内容(简单的三行数据 "\t" 分割):
01 小米
02 华为
03 格力
(下面就是一个简单的 pdMap 集合 放值 后 再取值 有一点问题)
public class DistributedCacheMapper extends
Mapper<LongWritable,Text,Text,NullWritable> {
Map<String,String> pdMap=new HashMap<String,String>();
@Override
protected void setup(Mapper<LongWritable,Text,Text,NullWritable>.Context context)
throws IOException, InterruptedException {
//获取缓存的文件
BufferedReader reader=new BufferedReader(new InputStreamReader(new
FileInputStream("E:/input/Map_join/pd.txt"),"UTF-8"));
String line;
//获取文件 一行一行的读取
while (StringUtils.isNotEmpty(line=reader.readLine())){
//切割
String [] fields=line.split("\t");
//缓存数据到集合
pdMap.put(fields[0],fields[1]);
System.out.println(pdMap.toString());
String pdName=pdMap.get("01");
System.out.println("01对应的值:"+pdName);
}
reader.close();
(省略map方法)
}
输出的结果:
{01=小米}
01对应的值:null
{02=华为, 01=小米}
01对应的值:null
{02=华为, 03=格力, 01=小米}
01对应的值:null
{02=华为, 03=格力, 01=小米}
01对应的值:null
debug看一下,查询原因
String [] fields=line.split("\t");看看这个数组有没有值
@奔跑的小虱子: debug是我们的好朋友