Job中配置:
String Info_inConfigDir = "hdfs://localhost:9000/cps/conf/FileReport";
Path filePath = new Path(Info_inConfigDir);
job.addCacheFile(filePath.toUri());
//mapper startup函数中接和处理
URI[] patternsURIs = context.getCacheFiles();
for (URI patternsURI : patternsURIs) { // 每一个patternsURI都代表一个文件
Path patternsPath = new Path(patternsURI.getPath());
String patternsFileName = patternsPath.getName().toString();
parseRegFile(patternsFileName);
}
private void parseRegFile(String fileName) {
Map<String, List<String>> regReportDataMap=null;
try {
if(fileName.indexOf(".bob")>0)
regReportDataMap = regReportDataMapBob;
else if(fileName.indexOf(".eob")>0)
regReportDataMap = regReportDataMapEob;
else
return;
fis = new BufferedReader(new FileReader(fileName));
String line = null;
while ((line = fis.readLine()) != null) {
//读取每行的关键字和属性,放入map
if(!line.trim().equals("") && !line.startsWith("#")){
String hexLine = ConvertUtil.toHexString(line);
String[] temparr = hexLine.split("09");//\t
List<String> dataList = new ArrayList<String>();
for (int i = 2; i < temparr.length; i++) {
dataList.add(ConvertUtil.toStringHex(temparr[i]));
}
regReportDataMap.put(ConvertUtil.toStringHex(temparr[1]), dataList);
}
}
} catch (IOException ioe) {
System.err.println("Caught exception while parsing the cached file '"
+ ioe.toString());
}
}