package computeResultCheck;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class ComputeResultsCompare {
public static Integer MAX_PARTFILE_NUMBER = 5;
public static String COMPARE_SOURCE_RESULTS_DIR =
"D:\\计算结果\\CC-BerkStan\\hash\\" ;
public static String SOURCE = "source\\";
public static String IMPROVE = "improve\\";
public static void main(String[] args) {
long startTime = System.currentTimeMillis() ;
ComputeResultsCompare pfs = new ComputeResultsCompare();
Thread[] paralFind = new Thread[MAX_PARTFILE_NUMBER ] ;
for (int p = 0; p <MAX_PARTFILE_NUMBER; p++) {
Integer i = p + 1;
FindSmallIdRunnable fir = pfs.new FindSmallIdRunnable(new String("part-m-0000" + i )) ;
paralFind[p] = new Thread(fir) ;
paralFind[p].start();
}
try {
for(Thread t : paralFind)
t.join() ;
} catch (InterruptedException e1) {
e1.printStackTrace();
}
System.out.println("Congratulations ! last " +(System.currentTimeMillis() - startTime) + "ms");
}
class FindSmallIdRunnable implements Runnable {
public String partFileName = "";
public FindSmallIdRunnable(String partFileName) {
this.partFileName = partFileName ;
}
@Override
public void run() {
BufferedReader sourceReader ;
BufferedReader improveReader ;
try {
String fileName = COMPARE_SOURCE_RESULTS_DIR + SOURCE + partFileName ;
File partFile = new File(fileName) ;
if(partFile.exists()) {
sourceReader = new BufferedReader(new FileReader(fileName));
String sourceTempString = "" ;
long sourcelineLength = 0l ;
String improveFileName = COMPARE_SOURCE_RESULTS_DIR + IMPROVE+ partFileName ;
File improvePartFile = new File(improveFileName ) ;
String improveTempString = "" ;
while ((sourceTempString = sourceReader.readLine()) != null)
{
if (!"".equals(sourceTempString)) {
String[] keyValuesSource = sourceTempString.split("\t");
Integer keySource = Integer.parseInt(keyValuesSource[0]);
Integer valueSource = Integer.parseInt(keyValuesSource[1]);
// if(improvePartFile.exists()) {
// improveReader = new BufferedReader(new FileReader(improveFileName));
// improvelineLength = 0l ;
// while ((improveTempString = improveReader.readLine()) != null) //遍历比对太慢! 改为直接定位比对
// {
// if (!"".equals(improveTempString)) {
// String[] keyValuesImprove = improveTempString.split("\t");
// if(keySource.equals(Integer.parseInt(keyValuesImprove[0]))) {
// if(!valueSource.equals(Integer.parseInt(keyValuesImprove[1]))) {
// System.out.println(Thread.currentThread().getName() + ", partFile: " + partFileName + " key: " +keySource
// +", Source Value: "+valueSource + ", valueImrpove: " +
// Integer.parseInt(keyValuesImprove[1]));
// } else
// break ;
// }
// improvelineLength = improvelineLength + improveTempString.length();
// }
// }
// improveReader.close() ;
// }
if(improvePartFile.exists()) {
improveReader = new BufferedReader(new FileReader(improveFileName));
improveReader.skip(sourcelineLength);
if((improveTempString = improveReader.readLine()) != null ) {
String[] keyValuesImprove = improveTempString.split("\t");
if(keySource.equals(Integer.parseInt(keyValuesImprove[0])) &&
!valueSource.equals(Integer.parseInt(keyValuesImprove[1]))) { //fine key level
System.out.println(Thread.currentThread().getName() + ", partFile: " + partFileName + " key: " +keySource
+", Source Value: "+valueSource + ", valueImrpove: " +
Integer.parseInt(keyValuesImprove[1]));
}
}
}
}
sourcelineLength = sourcelineLength + sourceTempString.length() + 1 ; // \n占1个字符
}
sourceReader.close() ;
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (NumberFormatException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}catch (Exception e1) {
e1.printStackTrace();
}
}
}
}
Hadoop计算结果并行比对
猜你喜欢
转载自blog.csdn.net/cloudeagle_bupt/article/details/82908773
今日推荐
周排行