package segmentfileread; import java.io.DataInput; import java.io.File; import java.io.IOException; import java.net.URI; import java.util.List; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FSDataInputStream; import org.apache.hadoop.fs.FileStatus; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.FileUtil; import org.apache.hadoop.fs.Path; import org.hamcrest.core.IsSame; import cn.ac.ncic.mastiff.io.segmentfile.PageMetaList; import cn.ac.ncic.mastiff.io.segmentfile.PageMetaSection; import cn.ac.ncic.mastiff.utils.Bytes; public class FileSystemCat { static int[] col0; static int[] col1 ; static int[] col2; static int[] col3 ; static double[] col4 ; static double[] col5 ; static double[] col6 ; static double[] col7 ; static byte[] col8 ; static byte[] col9 ; static int[] col0Min; static int[] col1Min ; static int[] col2Min; static int[] col3Min ; static double[] col4Min ; static double[] col5Min ; static double[] col6Min ; static double[] col7Min ; static byte[] col8Min ; static byte[] col9Min ; static int[] PageMetacol0; static int[] PageMetacol1 ; static int[] PageMetacol2; static int[] PageMetacol3 ; static double[] PageMetacol4 ; static double[] PageMetacol5 ; static double[] PageMetacol6 ; static double[] PageMetacol7 ; static byte[] PageMetacol8 ; static byte[] PageMetacol9 ; static int[] PageMetacol0Min; static int[] PageMetacol1Min ; static int[] PageMetacol2Min; static int[] PageMetacol3Min ; static double[] PageMetacol4Min ; static double[] PageMetacol5Min ; static double[] PageMetacol6Min ; static double[] PageMetacol7Min ; static byte[] PageMetacol8Min ; static byte[] PageMetacol9Min ; static long[] col0PageOffset,col1PageOffset,col2PageOffset,col3PageOffset,col4PageOffset; static int[] col0Numpairs,col1Numpairs,col2Numpairs,col3Numpairs,col4Numpairs; static int[] col0Seg=new int[8]; static int[] col1Seg=new int[8]; ; static int[] col2Seg=new int[8];; static int[] col3Seg=new int[8]; ; static double[] col4Seg=new double[8]; ; static double[] col5Seg=new double[8]; ; static double[] col6Seg=new double[8]; ; static double[] col7Seg=new double[8]; ; static byte[] col8Seg=new byte[8]; ; static byte[] col9Seg=new byte[8]; ; static int[] col0MinSeg=new int[8]; static int[] col1MinSeg =new int[8]; static int[] col2MinSeg=new int[8]; ;; static int[] col3MinSeg =new int[8]; static double[] col4MinSeg=new double[8]; static double[] col5MinSeg =new double[8]; static double[] col6MinSeg =new double[8]; static double[] col7MinSeg =new double[8]; static byte[] col8MinSeg=new byte[8]; static byte[] col9MinSeg=new byte[8]; static int[] realcol0Seg=new int[8]; static int[] realcol1Seg=new int[8]; ; static int[] realcol2Seg=new int[8];; static int[] realcol3Seg=new int[8]; ; static double[] realcol4Seg=new double[8]; ; static double[] realcol5Seg=new double[8]; ; static double[] realcol6Seg=new double[8]; ; static double[] realcol7Seg=new double[8]; ; static byte[] realcol8Seg=new byte[8]; ; static byte[] realcol9Seg=new byte[8]; ; static int[] realcol0MinSeg=new int[8]; static int[] realcol1MinSeg =new int[8]; static int[] realcol2MinSeg=new int[8]; ;; static int[] realcol3MinSeg =new int[8]; static double[] realcol4MinSeg=new double[8]; static double[] realcol5MinSeg =new double[8]; static double[] realcol6MinSeg =new double[8]; static double[] realcol7MinSeg =new double[8]; static byte[] realcol8MinSeg=new byte[8]; static byte[] realcol9MinSeg=new byte[8]; static SegmentIndexRef ref ; static FSDataInputStream istream; public static void main(String[] args) throws IOException { String dir = args[0]; Path pdir = new Path(dir); Configuration conf = new Configuration(); FileSystem fs = FileSystem.get(URI.create(dir), conf); FileStatus[] stat = fs.listStatus(pdir); Path[] paths = FileUtil.stat2Paths(stat); for (Path fst : paths) { try { readSegmentFile(fs, fst,args); computeMaxAndMin(); compareMaxAndMin(); compareSegMaxAndSegMin(); } catch (IOException e) { // TODO Auto-generated catch block } } System.out.println("run over ............................................."); } public static void computeMaxAndMin() throws IOException{ int count1=0,count2=0,count3=0,count4=0,count5=0; for (int m=0 ;m<ref.numClusters;m++){ if(m==0){ int tmp=0; for(int i=0;i<col0Numpairs.length;i++){ // if(i==0){ istream.seek(col0PageOffset[i]); System.out.println("col0PageOffset[i] "+col0PageOffset[i]); //} //col0[i]=Integer.MAX_VALUE;col0Min[i]=Integer.MIN_VALUE; for(int j=0;j<col0Numpairs[i]+3;j++){ // for(int three=0;three<3;three++){ // // } while(j<3){ System.out.println(istream.readInt()); j++; } tmp=istream.readInt(); if(j==3){ col0[i]=tmp;col0Min[i]=tmp; } // if(count1<10){ // System.out.println("value "+tmp); // count1++; // } if(col0[i]<=tmp){ col0[i]=tmp ; } if(col0Min[i]>=tmp){ col0Min[i]=tmp ; } } } } if(m==1){ int clusterId=0; int tmp1=0,tmp2=0; for(int i=0;i<col1Numpairs.length;i++){ // if(i==0){ istream.seek(col1PageOffset[i]); System.out.println("col1PageOffset[i] "+col1PageOffset[i]); // } col1[i]=Integer.MAX_VALUE;col1Min[i]=Integer.MIN_VALUE; col2[i]=Integer.MAX_VALUE;col2Min[i]=Integer.MIN_VALUE; for(int j=0;j<col1Numpairs[i]+3;j++){ while(j<3){ System.out.println(istream.readInt()); j++; } if(clusterId==0){ tmp1=istream.readInt(); clusterId++ ; if(j==3){ col1[i]=tmp1;col1Min[i]=tmp1; } if(col1[i]<tmp1){ col1[i]=tmp1 ; } if(col1Min[i]>=tmp1){ col1Min[i]=tmp1 ; } } if(clusterId==1){ tmp2=istream.readInt(); if(j==3){ col2[i]=tmp2;col2Min[i]=tmp2; } clusterId=0; if(count2<10){ System.out.println("value "+tmp2); count2++; } if(col2[i]<=tmp2){ col2[i]=tmp2 ; } if(col2Min[i]>=tmp2){ col2Min[i]=tmp2 ; } } } } // istream.seek } if(m==2){ // int clusterId=0; int tmp1=0; for(int i=0;i<col2Numpairs.length;i++){ // if(i==0){ istream.seek(col2PageOffset[i]); System.out.println("col2PageOffset[i] "+col2PageOffset[i]); // } col3[i]=Integer.MAX_VALUE;col3Min[i]=Integer.MIN_VALUE; // col2[i]=0;col2Min[i]=0; for(int j=0;j<col2Numpairs[i]+3;j++){ while(j<3){ System.out.println(istream.readInt()); j++; } // if(clusterId==0){ tmp1=istream.readInt(); // clusterId++ ; // } // // if(count3<10){ // System.out.println("value "+tmp1); // count3++; // } if(j==3){ col3[i]=tmp1;col3Min[i]=tmp1; } if(col3[i]<=tmp1){ col3[i]=tmp1 ; } if(col3Min[i]>=tmp1){ col3Min[i]=tmp1 ; } } // istream.seek } } if(m==3){ int clusterId=0; double tmp1=0,tmp2=0,tmp3=0,tmp4; for(int i=0;i<col3Numpairs.length;i++){ // if(i==0){ istream.seek(col3PageOffset[i]); System.out.println("col3PageOffset[i] "+col3PageOffset[i]); //} col4[i]=Double.MAX_VALUE;col4Min[i]=Double.MIN_VALUE; col5[i]=Double.MAX_VALUE;col5Min[i]=Double.MIN_VALUE; col6[i]=Double.MAX_VALUE;col6Min[i]=Double.MIN_VALUE; col7[i]=Double.MAX_VALUE;col7Min[i]=Double.MIN_VALUE; for(int j=0;j<col3Numpairs[i]+3;j++){ while(j<3){ System.out.println(istream.readInt()); j++; } if(clusterId==0){ tmp1=istream.readDouble(); clusterId++ ; if(j==3){ col4[i]=tmp1;col4Min[i]=tmp1; } if(col4[i]<=tmp1){ col4[i]=tmp1 ; } if(col4Min[i]>=tmp1){ col4Min[i]=tmp1 ; } // if(count4<10){ // System.out.println("value "+tmp1); // count4++; // } } if(clusterId==1){ tmp2=istream.readDouble(); if(j==3){ col5[i]=tmp2;col5Min[i]=tmp2; } clusterId++; if(col5[i]<=tmp2){ col5[i]=tmp2 ; } if(col5Min[i]>=tmp2){ col5Min[i]=tmp2 ; } } if(clusterId==2){ tmp3=istream.readDouble(); clusterId++; if(j==3){ col6[i]=tmp3;col6Min[i]=tmp3; } if(col6[i]<=tmp3){ col6[i]=tmp3 ; } if(col6Min[i]>=tmp3){ col6Min[i]=tmp3 ; } } if(clusterId==3){ tmp4=istream.readDouble(); clusterId=0; if(j==3){ col7[i]=tmp4;col7Min[i]=tmp4; } if(col7[i]<=tmp4){ col7[i]=tmp4 ; } if(col7Min[i]>=tmp4){ col7Min[i]=tmp4 ; } } } } // istream.seek } if(m==4){ int clusterId=0; byte tmp1=0,tmp2=0; for(int i=0;i<col4Numpairs.length;i++){ // if(i==0){ istream.seek(col4PageOffset[i]); System.out.println("col4PageOffset[i] "+col4PageOffset[i]); // } col8[i]=Byte.MAX_VALUE;col8Min[i]=Byte.MIN_VALUE; col9[i]=Byte.MAX_VALUE;col9Min[i]=Byte.MIN_VALUE; for(int j=0;j<col1Numpairs[i]+3;j++){ while(j<3){ System.out.println(istream.readInt()); j++; } if(clusterId==0){ tmp1=istream.readByte(); clusterId++ ; if(j==3){ col8[i]=tmp1;col8Min[i]=tmp1; } // if(count5<10){ // System.out.println("value "+tmp1); // count5++; // } if(col8[i]<=tmp1){ col8[i]=tmp1 ; } if(col8Min[i]>=tmp1){ col8Min[i]=tmp1 ; } } if(clusterId==1){ tmp2=istream.readByte(); clusterId=0; if(j==3){ col9[i]=tmp2;col9Min[i]=tmp2; } if(col9[i]<=tmp2){ col9[i]=tmp2 ; } if(col9Min[i]>=tmp2){ col9Min[i]=tmp2 ; } } } } // istream.seek } } } public static void readSegmentFile(FileSystem fs, Path p,String[] str) throws IOException { System.out.println(p.toString()); long fileLength = fs.getFileStatus(p).getLen(); // if (fileLength > 0) { istream = fs.open(p); istream.seek(fileLength - 2 * 4 - 8); ref = new SegmentIndexRef(); ref.numClusters = istream.readInt(); ref.numSegs = istream.readInt(); long segIndexOffset = istream.readLong(); ref.segOffsets = new long[ref.numSegs]; ref.segPMSOffsets = new long[ref.numSegs]; ref.segLengths = new long[ref.numSegs]; ref.segMetas = new PageMeta[ref.numSegs][]; System.out.println("ref.numClusters "+ref.numClusters ); System.out.println("ref.numSegs "+ref.numSegs ); System.out.println("segIndexOffset "+segIndexOffset ); istream.seek(segIndexOffset); for (int i = 0; i < ref.numSegs; i++) { ref.segOffsets[i] = istream.readLong(); ref.segPMSOffsets[i] = istream.readLong(); ref.segLengths[i] = istream.readLong(); ref.segMetas[i] = new PageMeta[ref.numClusters]; System.out.println("ref.segOffsets[i] "+ref.segOffsets[i] ); System.out.println("ref.segPMSOffsets[i] "+ref.segPMSOffsets[i] ); System.out.println("ref.segLengths[i] "+ref.segLengths[i]); for (int j = 0; j < ref.numClusters; j++) { ref.segMetas[i][j] = new PageMeta(); ref.segMetas[i][j].readFields(istream); PageMeta meta = ref.segMetas[i][j] ; System.out.println("meta.numPairs "+meta.numPairs); System.out.println("meta.startPos"+meta.startPos); if(j==0){ // LOG.info("415 max :"+Bytes.toInt(pm.max.data, 0)+"min :"+Bytes.toInt(pm.min.data, 0)); //System.out.println("i==0 max :"+Bytes.toInt(meta.max.data, 0)+"min :"+Bytes.toInt(meta.min.data, 0)); col0Seg[i]=Bytes.toInt(meta.max.data, 0); col0MinSeg[i]=Bytes.toInt(meta.min.data, 0); } if(j==1){ col1Seg[i]=Bytes.toInt(meta.max.data, 0); col1MinSeg[i]=Bytes.toInt(meta.min.data, 0); col2Seg[i]=Bytes.toInt(meta.max.data, 4); col2MinSeg[i]=Bytes.toInt(meta.min.data, 4); } if(j==2){ col3Seg[i]=Bytes.toInt(meta.max.data, 0); col3MinSeg[i]=Bytes.toInt(meta.min.data, 0); } if(j==3){ col4Seg[i]=Bytes.toDouble(meta.max.data, 0); col4MinSeg[i]=Bytes.toDouble(meta.min.data, 0); col5Seg[i]=Bytes.toDouble(meta.max.data, 8); col5MinSeg[i]=Bytes.toDouble(meta.min.data, 8); col6Seg[i]=Bytes.toDouble(meta.max.data, 16); col6MinSeg[i]=Bytes.toDouble(meta.min.data, 16); col7Seg[i]=Bytes.toDouble(meta.max.data, 24); col7MinSeg[i]=Bytes.toDouble(meta.min.data, 24); } if(j==4){ // LOG.info("i=4 max :"+Bytes.toLong(pm.max.data, 0)+"min :"+Bytes.toLong(pm.min.data, 0)); // System.out.println("i=4 max :"+Bytes.toLong(meta.max.data, 0)+"min :"+Bytes.toLong(meta.min.data, 0)); col8Seg[i]=meta.max.data[0]; col8MinSeg[i]=meta.min.data[0]; col9Seg[i]=meta.max.data[1]; col9MinSeg[i]=meta.min.data[1]; } } } // segPMSOffsets.add(outputStream.getPos()); // // write the pagemeta section // LOG.info("And write its page meta section."); // pms.setPageMetaLists(pageMetaLists); // pms.write(outputStream); // // write the cluter index // LOG.info("And write its clusters' offsets."); // for (long l : clusterOffsetInCurSegment) { // outputStream.writeLong(l); // } // // // record the length of the segment // long length = outputStream.getPos() - segOffsets.get(curSegIdx); // for (long l : clusterOffsetInCurSegment) { // outputStream.writeLong(l); // } // read the cluter index istream.seek(Long.parseLong(str[1])-9*8); // istream.seek(132981800-9*8); //istream.seek( 209206786-9*8); // istream.seek( 209207244-9*8); for (int m=0 ;m<ref.numClusters;m++){ System.out.println("111 clusterOffsetInCurSegment "+istream.readLong()); } istream.seek(Long.parseLong(str[2])); //istream.seek(132959750); //istream.seek(209172301); // istream.seek(209194411); PageMetaSection pms=new PageMetaSection(true); pms.readFields(istream); // int[] col0; // int[] col1 ; // int[] col2; // int[] col3 ; // double[] col4 ; // double[] col5 ; // double[] col6 ; // double[] col7 ; // byte[] col8 ; // byte[] col9 ; // int[] col0Min; // int[] col1Min ; // int[] col2Min; // int[] col3Min ; // double[] col4Min ; // double[] col5Min ; // double[] col6Min ; // double[] col7Min ; // byte[] col8Min ; // byte[] col9Min ; // int[] PageMetacol0; // int[] PageMetacol1 ; // int[] PageMetacol2; // int[] PageMetacol3 ; // double[] PageMetacol4 ; // double[] PageMetacol5 ; // double[] PageMetacol6 ; // double[] PageMetacol7 ; // byte[] PageMetacol8 ; // byte[] PageMetacol9 ; // int[] PageMetacol0Min; // int[] PageMetacol1Min ; // int[] PageMetacol2Min; // int[] PageMetacol3Min ; // double[] PageMetacol4Min ; // double[] PageMetacol5Min ; // double[] PageMetacol6Min ; // double[] PageMetacol7Min ; // byte[] PageMetacol8Min ; // byte[] PageMetacol9Min ; // int[] col0PageOffset,col1PageOffset,col2PageOffset,col3PageOffset,col4PageOffset; PageMetaList[] pageMetaList = pms.getPageMetaLists() ; for (int m=0 ;m<ref.numClusters;m++){ System.out.println("121 121 "); PageMetaList pagemeta= pageMetaList[m] ; List<cn.ac.ncic.mastiff.io.segmentfile.PageMeta> list= pagemeta.getMetaList() ; List<Long> size=pagemeta.getOffsetList(); switch (m){ case 0:col0Numpairs=new int[list.size()];col0PageOffset=new long[list.size()];col0=new int[list.size()] ;col0Min=new int[list.size()] ;PageMetacol0=new int[list.size()] ;PageMetacol0Min=new int[list.size()] ;break ; case 1: col1Numpairs=new int[list.size()];col1PageOffset=new long[list.size()];;col1=new int[list.size()] ;col1Min=new int[list.size()] ;PageMetacol1=new int[list.size()] ;PageMetacol1Min=new int[list.size()] ;col2=new int[list.size()] ;col2Min=new int[list.size()] ;PageMetacol2=new int[list.size()] ;PageMetacol2Min=new int[list.size()] ;break ; case 2: col2Numpairs=new int[list.size()];col2PageOffset=new long[list.size()];col3=new int[list.size()] ;col3Min=new int[list.size()] ;PageMetacol3=new int[list.size()] ;PageMetacol3Min=new int[list.size()] ;break ; case 3: col3Numpairs=new int[list.size()];col3PageOffset=new long[list.size()];col4=new double[list.size()] ;col4Min=new double[list.size()] ;PageMetacol4=new double[list.size()] ;PageMetacol4Min=new double[list.size()] ;col5=new double[list.size()] ;col5Min=new double[list.size()] ;PageMetacol5=new double[list.size()] ;PageMetacol5Min=new double[list.size()] ; col6=new double[list.size()] ;col6Min=new double[list.size()] ;PageMetacol6=new double[list.size()] ;PageMetacol6Min=new double[list.size()] ; col7=new double[list.size()] ;col7Min=new double[list.size()] ;PageMetacol7=new double[list.size()] ;PageMetacol7Min=new double[list.size()] ;break ; case 4: col4Numpairs=new int[list.size()];col4PageOffset=new long[list.size()];col8=new byte[list.size()] ;col8Min=new byte[list.size()] ;PageMetacol8=new byte[list.size()] ;PageMetacol8Min=new byte[list.size()] ; col9=new byte[list.size()] ;col9Min=new byte[list.size()] ;PageMetacol9=new byte[list.size()] ;PageMetacol9Min=new byte[list.size()] ;break ; // case 5: break ; // case 6: break ; // case 7: break ; // case 8:break ; // case 9:break ; default :break ; } for(int l=0;l<list.size();l++){ if(m==0){ // System.out.println("m==0 page Max Min "+Bytes.toInt(list.get(l).max.data, 0)+" min "+Bytes.toInt(list.get(l).min.data, 0)); // System.out.println("numpairs numpairs numpairs numpairs numpairs "+"pageId "+l +" "+list.get(l).numPairs); // System.out.println("position position position position "+"pageId "+l +" "+list.get(l).startPos); PageMetacol0[l]=Bytes.toInt(list.get(l).max.data, 0); PageMetacol0Min[l]=Bytes.toInt(list.get(l).min.data, 0); col0Numpairs[l]=list.get(l).numPairs ; } if(m==1){ PageMetacol1[l]=Bytes.toInt(list.get(l).max.data, 0); PageMetacol1Min[l]=Bytes.toInt(list.get(l).min.data, 0); PageMetacol2[l]=Bytes.toInt(list.get(l).max.data, 4); PageMetacol2Min[l]=Bytes.toInt(list.get(l).min.data, 4); col1Numpairs[l]=list.get(l).numPairs ; } if(m==2){ // System.out.println("m==3 page Max Min "+"pageId "+l +" "+Bytes.toDouble(list.get(l).max.data, 0)+" min "+Bytes.toDouble(list.get(l).min.data, 0)); // // System.out.println("m==3 page Max Min "+"pageId "+l +" "+Bytes.toDouble(list.get(l).max.data, 8)+" min "+Bytes.toDouble(list.get(l).min.data, 8)); // System.out.println("m==3 page Max Min "+"pageId "+l +" "+Bytes.toDouble(list.get(l).max.data, 16)+" min "+Bytes.toDouble(list.get(l).min.data, 16)); // // System.out.println("m=3 numpairs numpairs numpairs numpairs numpairs "+"pageId "+l +" "+list.get(l).numPairs); // System.out.println("m=3 position position position position "+"pageId "+l +" "+list.get(l).startPos); PageMetacol3[l]=Bytes.toInt(list.get(l).max.data, 0); PageMetacol3Min[l]=Bytes.toInt(list.get(l).min.data, 0); col2Numpairs[l]=list.get(l).numPairs ; } if(m==3){ // System.out.println("m==3 page Max Min "+"pageId "+l +" "+Bytes.toDouble(list.get(l).max.data, 0)+" min "+Bytes.toDouble(list.get(l).min.data, 0)); // // System.out.println("m==3 page Max Min "+"pageId "+l +" "+Bytes.toDouble(list.get(l).max.data, 8)+" min "+Bytes.toDouble(list.get(l).min.data, 8)); // System.out.println("m==3 page Max Min "+"pageId "+l +" "+Bytes.toDouble(list.get(l).max.data, 16)+" min "+Bytes.toDouble(list.get(l).min.data, 16)); // // System.out.println("m=3 numpairs numpairs numpairs numpairs numpairs "+"pageId "+l +" "+list.get(l).numPairs); // System.out.println("m=3 position position position position "+"pageId "+l +" "+list.get(l).startPos); PageMetacol4[l]=Bytes.toDouble(list.get(l).max.data, 0); PageMetacol4Min[l]=Bytes.toDouble(list.get(l).min.data, 0); PageMetacol5[l]=Bytes.toDouble(list.get(l).max.data, 8); PageMetacol5Min[l]=Bytes.toDouble(list.get(l).min.data, 8); PageMetacol6[l]=Bytes.toDouble(list.get(l).max.data, 16); PageMetacol6Min[l]=Bytes.toDouble(list.get(l).min.data, 16); PageMetacol7[l]=Bytes.toDouble(list.get(l).max.data, 24); PageMetacol7Min[l]=Bytes.toDouble(list.get(l).min.data, 24); col3Numpairs[l]=list.get(l).numPairs ; } if(m==4){ // System.out.println("m==4 page Max Min "+list.get(l).max.data[0]+" min "+list.get(l).min.data[0]); // // System.out.println("m==4 page Max Min "+list.get(l).max.data[1]+" min "+list.get(l).min.data[1]); // // Bytes.toShort(bytes, offset) // // Bytes.toDouble(bytes, offset) // System.out.println("m=4 numpairs numpairs numpairs numpairs numpairs "+list.get(l).numPairs); // System.out.println("m=4 position position position position "+list.get(l).startPos); PageMetacol8[l]=list.get(l).max.data[0]; PageMetacol8Min[l]=list.get(l).min.data[0];; PageMetacol9[l]=list.get(l).max.data[1]; PageMetacol9Min[l]=list.get(l).min.data[1]; col4Numpairs[l]=list.get(l).numPairs ; } } // int[] col0PageOffset,col1PageOffset,col2PageOffset,col3PageOffset,col4PageOffset; // static int[] col0Numpairs,col1Numpairs,col2Numpairs,col3Numpairs,col4Numpairs; for (int i=0;i<size.size();i++){ //System.out.println("m= "+m+"pageIDId "+i +" "+" pageoffset "+size.get(i)); // int ii=i ; switch (m){ case 0:col0PageOffset[i]=size.get(i);break ; case 1:col1PageOffset[i]=size.get(i);break ; case 2:col2PageOffset[i]=size.get(i);break ; case 3:col3PageOffset[i]=size.get(i);break; case 4:col4PageOffset[i]=size.get(i);break ; default: break ; } } // System.out.println("clusterOffsetInCurSegment "+istream.readLong()); } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////compute real Max and Min ////////////////////////////////////////////compare the Max and Min // static byte[] realcol8MinSeg=new byte[2]; // static byte[] realcol9MinSeg=new byte[2]; // int l= 0; // for (long curLength : ref.segLengths) { // System.out.println("Seg " + l + " size: " // + (curLength / (1024 * 1024)) + "M"); // l++; // } // out.reset(); // out.writeInt(pageLen); // out.write(page, 0, pageLen); // // istream.seek(134030376); // System.out.println("/////////////////////////read a page "); // int len=istream.readInt() ; // System.out.println("page length "+len); // byte[] bytes=new byte[524288]; // istream.read(bytes, 0, 524288) ; // System.out.println("bytes .length "+bytes.length); // for(int i=0;i<131072;i++){ // System.out.println("value "+istream.readInt()); // } // System.out.println("value count over "); // // istream.readInt(); //// ValPair max= new ValPair() ; //// max.readFields(istream); //// //ValPair max= new ValPair().readFields(istream); //// ValPair min= new ValPair() ; //// min.readFields(istream); ////// out.writeInt(pms[i].startPos); ////// out.writeInt(pms[i].numPairs); //// System.out.println("startPost "+istream.readInt()); //// System.out.println("numPairs "+istream.readInt()); //// System.out.println(max.length); //// System.out.println(max.offset); //// System.out.println(max.pos); //// System.out.println(min.length); //// System.out.println(min.offset); //// System.out.println(min.pos); //// //// // // // // istream.seek(209172301) ; // // istream.seek(50855624); //istream.seek(162354964) ; // System.out.println("/////////////////////////read a page "); // System.out.println("bytes .length "+bytes.length); // int tmp =0 ; // for(int i=0;i<131072*2;i++){ // System.out.println("value "+istream.readByte()); // tmp++ ; // } //System.out.println("tmp "+tmp); // int mlen=istream.readInt() ; // // System.out.println("mpage length "+mlen); // byte[] mbytes=new byte[524288]; // istream.read(mbytes,0, 524288) ; // System.out.println("mbytes .length "+mbytes.length); // ValPair mmax= new ValPair() ; // mmax.readFields(istream); // // //ValPair max= new ValPair().readFields(istream); // ValPair mmin= new ValPair() ; // mmin.readFields(istream); //// out.writeInt(pms[i].startPos); //// out.writeInt(pms[i].numPairs); // System.out.println(mmax.length); // System.out.println(mmax.offset); // System.out.println(mmax.pos); // System.out.println(mmin.length); // System.out.println(mmin.offset); // System.out.println(mmin.pos); // System.out.println("startPost "+istream.readInt()); // System.out.println("numPairs "+istream.readInt()); // // // } } public static void compareSegMaxAndSegMin(){ // for (int n=0 ;n<ref.numClusters;n++){ // if(n==0){ // if(realcol0MinSeg[0]!=col0MinSeg[0]){ // System.out.println("realcol0MinSeg[0]!=col0MinSeg[0] "+realcol0MinSeg[0]+" "+col0MinSeg[0]); // } // System.out.println("col0MinSeg[0] "+col0MinSeg[0]); // System.out.println("col0Seg[0] "+col0Seg[0]); // if(realcol0Seg[0]!=col0Seg[0]){ // System.out.println("realcol0Seg[0]!=col0Seg[0] "+realcol0Seg[0]+" "+col0Seg[0]); // } // // // } // if(n==1){ // if(realcol1MinSeg[0]!=col1MinSeg[0]){ // System.out.println("realcol1MinSeg[0]!=col1MinSeg[0] "+realcol1MinSeg[0]+" "+col1MinSeg[0]); // } // if(realcol1Seg[0]!=col1Seg[0]){ // System.out.println("realcol1nSeg[0]!=col1Seg[0] "+realcol1Seg[0]+" "+col1Seg[0]); // } // if(realcol2MinSeg[0]!=col2MinSeg[0]){ // System.out.println("realcol2MinSeg[0]!=col21MinSeg[0] "+realcol2MinSeg[0]+" "+col2MinSeg[0]); // } // if(realcol2Seg[0]!=col2Seg[0]){ // System.out.println("realcol2nSeg[0]!=col2Seg[0] "+realcol2Seg[0]+" "+col2Seg[0]); // } // System.out.println("col1MinSeg[0] "+col1MinSeg[0]); // System.out.println("col1Seg[0] "+col1Seg[0]); // System.out.println("col2MinSeg[0] "+col2MinSeg[0]); // System.out.println("col2Seg[0] "+col2Seg[0]); // } // if(n==2){ // if(realcol3MinSeg[0]!=col3MinSeg[0]){ // System.out.println("realcol3MinSeg[0]!=col3MinSeg[0] "+realcol3MinSeg[0]+" "+col3MinSeg[0]); // } // if(realcol3Seg[0]!=col3Seg[0]){ // System.out.println("realcol3nSeg[0]!=col3Seg[0] "+realcol3Seg[0]+" "+col3Seg[0]); // } // // // System.out.println("col3MinSeg[0] "+col3MinSeg[0]); // System.out.println("col3Seg[0] "+col3Seg[0]); // } // if(n==3){ // if(realcol4MinSeg[0]!=col4MinSeg[0]){ // System.out.println("realcol4MinSeg[0]!=col4MinSeg[0] "+realcol4MinSeg[0]+" "+col4MinSeg[0]); // } // if(realcol4Seg[0]!=col4Seg[0]){ // System.out.println("realcol4nSeg[0]!=col4Seg[0] "+realcol4Seg[0]+" "+col4Seg[0]); // } // // if(realcol5MinSeg[0]!=col5MinSeg[0]){ // System.out.println("realcol5MinSeg[0]!=col5MinSeg[0] "+realcol5MinSeg[0]+" "+col5MinSeg[0]); // } // if(realcol5Seg[0]!=col5Seg[0]){ // System.out.println("realcol5nSeg[0]!=col5Seg[0] "+realcol5Seg[0]+" "+col5Seg[0]); // } // // if(realcol6MinSeg[0]!=col6MinSeg[0]){ // System.out.println("realcol6MinSeg[0]!=col6MinSeg[0] "+realcol6MinSeg[0]+" "+col6MinSeg[0]); // } // if(realcol6Seg[0]!=col6Seg[0]){ // System.out.println("realcol6nSeg[0]!=col6Seg[0] "+realcol6Seg[0]+" "+col6Seg[0]); // } // // if(realcol7MinSeg[0]!=col7MinSeg[0]){ // System.out.println("realcol7MinSeg[0]!=col7MinSeg[0] "+realcol7MinSeg[0]+" "+col7MinSeg[0]); // } // if(realcol7Seg[0]!=col7Seg[0]){ // System.out.println("realcol7nSeg[0]!=col7Seg[0] "+realcol7Seg[0]+" "+col7Seg[0]); // } // // System.out.println("col4MinSeg[0] "+col4MinSeg[0]); // System.out.println("col40Seg[0] "+col4Seg[0]); // System.out.println("col5MinSeg[0] "+col5MinSeg[0]); // System.out.println("col5Seg[0] "+col5Seg[0]); // System.out.println("col6MinSeg[0] "+col6MinSeg[0]); // System.out.println("col6Seg[0] "+col6Seg[0]); // System.out.println("col7MinSeg[0] "+col7MinSeg[0]); // System.out.println("col7Seg[0] "+col7Seg[0]); // } // // if(n==4){ // if(realcol8MinSeg[0]!=col8MinSeg[0]){ // System.out.println("realcol8MinSeg[0]!=col8MinSeg[0] "+realcol8MinSeg[0]+" "+col8MinSeg[0]); // } // if(realcol8Seg[0]!=col8Seg[0]){ // System.out.println("realcol8nSeg[0]!=col8Seg[0] "+realcol8Seg[0]+" "+col8Seg[0]); // } // // if(realcol9MinSeg[0]!=col9MinSeg[0]){ // System.out.println("realcol9MinSeg[0]!=col9MinSeg[0] "+realcol9MinSeg[0]+" "+col9MinSeg[0]); // } // if(realcol9Seg[0]!=col9Seg[0]){ // System.out.println("realcol9nSeg[0]!=col9Seg[0] "+realcol9Seg[0]+" "+col9Seg[0]); // } // // // // } // } for (int n=0 ;n<ref.numClusters;n++){ if(n==0){ if(realcol0MinSeg[0]!=col0MinSeg[1]){ System.out.println("realcol0MinSeg[0]!=col0MinSeg[0] "+realcol0MinSeg[0]+" "+col0MinSeg[1]); } System.out.println("col0MinSeg[0] "+col0MinSeg[1]); System.out.println("col0Seg[0] "+col0Seg[1]); if(realcol0Seg[0]!=col0Seg[1]){ System.out.println("realcol0Seg[0]!=col0Seg[0] "+realcol0Seg[0]+" "+col0Seg[1]); } } if(n==1){ if(realcol1MinSeg[0]!=col1MinSeg[1]){ System.out.println("realcol1MinSeg[0]!=col1MinSeg[0] "+realcol1MinSeg[0]+" "+col1MinSeg[1]); } if(realcol1Seg[0]!=col1Seg[1]){ System.out.println("realcol1nSeg[0]!=col1Seg[0] "+realcol1Seg[0]+" "+col1Seg[1]); } if(realcol2MinSeg[0]!=col2MinSeg[1]){ System.out.println("realcol2MinSeg[0]!=col21MinSeg[0] "+realcol2MinSeg[0]+" "+col2MinSeg[1]); } if(realcol2Seg[0]!=col2Seg[1]){ System.out.println("realcol2nSeg[0]!=col2Seg[0] "+realcol2Seg[0]+" "+col2Seg[1]); } System.out.println("col1MinSeg[0] "+col1MinSeg[1]); System.out.println("col1Seg[0] "+col1Seg[1]); System.out.println("col2MinSeg[0] "+col2MinSeg[1]); System.out.println("col2Seg[0] "+col2Seg[1]); } if(n==2){ if(realcol3MinSeg[0]!=col3MinSeg[1]){ System.out.println("realcol3MinSeg[0]!=col3MinSeg[0] "+realcol3MinSeg[0]+" "+col3MinSeg[1]); } if(realcol3Seg[0]!=col3Seg[1]){ System.out.println("realcol3nSeg[0]!=col3Seg[0] "+realcol3Seg[0]+" "+col3Seg[1]); } System.out.println("col3MinSeg[0] "+col3MinSeg[1]); System.out.println("col3Seg[0] "+col3Seg[1]); } if(n==3){ if(realcol4MinSeg[0]!=col4MinSeg[1]){ System.out.println("realcol4MinSeg[0]!=col4MinSeg[0] "+realcol4MinSeg[0]+" "+col4MinSeg[1]); } if(realcol4Seg[0]!=col4Seg[1]){ System.out.println("realcol4nSeg[0]!=col4Seg[0] "+realcol4Seg[0]+" "+col4Seg[1]); } if(realcol5MinSeg[0]!=col5MinSeg[1]){ System.out.println("realcol5MinSeg[0]!=col5MinSeg[0] "+realcol5MinSeg[0]+" "+col5MinSeg[1]); } if(realcol5Seg[0]!=col5Seg[1]){ System.out.println("realcol5nSeg[0]!=col5Seg[0] "+realcol5Seg[0]+" "+col5Seg[1]); } if(realcol6MinSeg[0]!=col6MinSeg[1]){ System.out.println("realcol6MinSeg[0]!=col6MinSeg[0] "+realcol6MinSeg[0]+" "+col6MinSeg[1]); } if(realcol6Seg[0]!=col6Seg[1]){ System.out.println("realcol6nSeg[0]!=col6Seg[0] "+realcol6Seg[0]+" "+col6Seg[1]); } if(realcol7MinSeg[0]!=col7MinSeg[1]){ System.out.println("realcol7MinSeg[0]!=col7MinSeg[0] "+realcol7MinSeg[0]+" "+col7MinSeg[1]); } if(realcol7Seg[0]!=col7Seg[1]){ System.out.println("realcol7nSeg[0]!=col7Seg[0] "+realcol7Seg[0]+" "+col7Seg[1]); } System.out.println("col4MinSeg[0] "+col4MinSeg[1]); System.out.println("col40Seg[0] "+col4Seg[1]); System.out.println("col5MinSeg[0] "+col5MinSeg[1]); System.out.println("col5Seg[0] "+col5Seg[1]); System.out.println("col6MinSeg[0] "+col6MinSeg[1]); System.out.println("col6Seg[0] "+col6Seg[1]); System.out.println("col7MinSeg[0] "+col7MinSeg[1]); System.out.println("col7Seg[0] "+col7Seg[1]); } if(n==4){ if(realcol8MinSeg[0]!=col8MinSeg[1]){ System.out.println("realcol8MinSeg[0]!=col8MinSeg[0] "+realcol8MinSeg[0]+" "+col8MinSeg[1]); } if(realcol8Seg[0]!=col8Seg[1]){ System.out.println("realcol8nSeg[0]!=col8Seg[0] "+realcol8Seg[0]+" "+col8Seg[1]); } if(realcol9MinSeg[0]!=col9MinSeg[1]){ System.out.println("realcol9MinSeg[0]!=col9MinSeg[0] "+realcol9MinSeg[0]+" "+col9MinSeg[1]); } if(realcol9Seg[0]!=col9Seg[1]){ System.out.println("realcol9nSeg[0]!=col9Seg[0] "+realcol9Seg[0]+" "+col9Seg[1]); } } } } public static void compareMaxAndMin(){ for (int n=0 ;n<ref.numClusters;n++){ if(n==0){ for(int i=0;i<col0.length;i++){ if(i==0){ realcol0Seg[0]=col0[i]; realcol0MinSeg[0]=col0Min[i]; } if(realcol0Seg[0]<=col0[i]){ realcol0Seg[0]=col0[i]; } if(realcol0MinSeg[0]>=col0Min[i]){ realcol0MinSeg[0]=col0Min[i]; } if(col0[i]!=PageMetacol0[i]){ System.out.println("Wrong "+"clusterId= "+n +" PageId i= "+i+" col0[i]= "+col0[i]+" PageMetacol0[i] "+PageMetacol0[i]); } if(col0Min[i]!=PageMetacol0Min[i]){ System.out.println("Wrong "+"clusterId= "+n +" PageId i= "+i+" col0Min[i]= "+col0Min[i]+" PageMetacol0Min[i] "+PageMetacol0Min[i]); } } } if(n==1){ for(int i=0;i<col1.length;i++){ if(i==0){ realcol1Seg[0]=col1[i]; realcol1MinSeg[0]=col1Min[i]; } if(realcol1Seg[0]<=col1[i]){ realcol1Seg[0]=col1[i]; } if(realcol1MinSeg[0]>=col1Min[i]){ realcol1MinSeg[0]=col1Min[i]; } if(col1[i]!=PageMetacol1[i]){ System.out.println("Wrong "+"clusterId= "+n +" PageId i= "+i+" col1[i]= "+col1[i]+" PageMetacol1[i] "+PageMetacol1[i]); } if(col1Min[i]!=PageMetacol1Min[i]){ System.out.println("Wrong "+"clusterId= "+n +" PageId i= "+i+" col1Min[i]= "+col1Min[i]+" PageMetacol1Min[i] "+PageMetacol1Min[i]); } } for(int i=0;i<col2.length;i++){ if(i==0){ realcol2Seg[0]=col2[i]; realcol2MinSeg[0]=col2Min[i]; } if(realcol2Seg[0]<col2[i]){ realcol2Seg[0]=col2[i]; } if(realcol2MinSeg[0]>=col2Min[i]){ realcol2MinSeg[0]=col2Min[i]; } if(col2[i]!=PageMetacol2[i]){ System.out.println("Wrong "+"clusterId= "+n +" PageId i= "+i+" col2[i]= "+col2[i]+" PageMetacol2[i] "+PageMetacol2[i]); } if(col2Min[i]!=PageMetacol2Min[i]){ System.out.println("Wrong "+"clusterId= "+n +" PageId i= "+i+" col2Min[i]= "+col2Min[i]+" PageMetacol2Min[i] "+PageMetacol2Min[i]); } } } if(n==2){ for(int i=0;i<col3.length;i++){ if(i==0){ realcol3Seg[0]=col3[i]; realcol3MinSeg[0]=col3Min[i]; } if(realcol3Seg[0]<=col3[i]){ realcol3Seg[0]=col3[i]; } if(realcol3MinSeg[0]>=col3Min[i]){ realcol3MinSeg[0]=col3Min[i]; } if(col3[i]!=PageMetacol3[i]){ System.out.println("Wrong "+"clusterId= "+n +" PageId i= "+i+" col3[i]= "+col3[i]+" PageMetacol3[i] "+PageMetacol3[i]); } if(col3Min[i]!=PageMetacol3Min[i]){ System.out.println("Wrong "+"clusterId= "+n +" PageId i= "+i+" col3Min[i]= "+col3Min[i]+" PageMetacol3Min[i] "+PageMetacol3Min[i]); } } } if(n==3){ for(int i=0;i<col4.length;i++){ if(i==0){ realcol4Seg[0]=col4[i]; realcol4MinSeg[0]=col4Min[i]; } if(realcol4Seg[0]<=col4[i]){ realcol4Seg[0]=col4[i]; } if(realcol4MinSeg[0]>=col4Min[i]){ realcol4MinSeg[0]=col4Min[i]; } if(col4[i]!=PageMetacol4[i]){ System.out.println("Wrong "+"clusterId= "+n +" PageId i= "+i+" col4[i]= "+col4[i]+" PageMetacol4[i] "+PageMetacol4[i]); } if(col4Min[i]!=PageMetacol4Min[i]){ System.out.println("Wrong "+"clusterId= "+n +" PageId i= "+i+" col4Min[i]= "+col4Min[i]+" PageMetacol4Min[i] "+PageMetacol4Min[i]); } } for(int i=0;i<col5.length;i++){ if(i==0){ realcol5Seg[0]=col5[i]; realcol5MinSeg[0]=col5Min[i]; } if(realcol5Seg[0]<=col5[i]){ realcol5Seg[0]=col5[i]; } if(realcol5MinSeg[0]>=col5Min[i]){ realcol5MinSeg[0]=col5Min[i]; } if(col5[i]!=PageMetacol5[i]){ System.out.println("Wrong "+"clusterId= "+n +" PageId i= "+i+" col5[i]= "+col5[i]+" PageMetacol5[i] "+PageMetacol5[i]); } if(col5Min[i]!=PageMetacol5Min[i]){ System.out.println("Wrong "+"clusterId= "+n +" PageId i= "+i+" col5Min[i]= "+col5Min[i]+" PageMetacol5Min[i] "+PageMetacol5Min[i]); } } for(int i=0;i<col6.length;i++){ if(i==0){ realcol6Seg[0]=col6[i]; realcol6MinSeg[0]=col6Min[i]; } if(realcol6Seg[0]<=col6[i]){ realcol6Seg[0]=col6[i]; } if(realcol6MinSeg[0]>=col6Min[i]){ realcol6MinSeg[0]=col6Min[i]; } if(col6[i]!=PageMetacol6[i]){ System.out.println("Wrong "+"clusterId= "+n +" PageId i= "+i+" col6[i]= "+col6[i]+" PageMetacol6[i] "+PageMetacol6[i]); } if(col6Min[i]!=PageMetacol6Min[i]){ System.out.println("Wrong "+"clusterId= "+n +" PageId i= "+i+" col6Min[i]= "+col6Min[i]+" PageMetacol6Min[i] "+PageMetacol6Min[i]); } } for(int i=0;i<col7.length;i++){ if(i==0){ realcol7Seg[0]=col7[i]; realcol7MinSeg[0]=col7Min[i]; } if(realcol7Seg[0]<=col7[i]){ realcol7Seg[0]=col7[i]; } if(realcol7MinSeg[0]>=col7Min[i]){ realcol7MinSeg[0]=col7Min[i]; } if(col7[i]!=PageMetacol7[i]){ System.out.println("Wrong "+"clusterId= "+n +" PageId i= "+i+" col7[i]= "+col7[i]+" PageMetacol7[i] "+PageMetacol7[i]); } if(col7Min[i]!=PageMetacol7Min[i]){ System.out.println("Wrong "+"clusterId= "+n +" PageId i= "+i+" col7Min[i]= "+col7Min[i]+" PageMetacol7Min[i] "+PageMetacol7Min[i]); } } } if(n==4){ for(int i=0;i<col8.length;i++){ if(i==0){ realcol8Seg[0]=col8[i]; realcol8MinSeg[0]=col8Min[i]; } if(realcol8Seg[0]<=col8[i]){ realcol8Seg[0]=col8[i]; } if(realcol8MinSeg[0]>=col8Min[i]){ realcol8MinSeg[0]=col8Min[i]; } if(col8[i]!=PageMetacol8[i]){ System.out.println("Wrong "+"clusterId= "+n +" PageId i= "+i+" col8[i]= "+col8[i]+" PageMetacol8[i] "+PageMetacol8[i]); } if(col8Min[i]!=PageMetacol8Min[i]){ System.out.println("Wrong "+"clusterId= "+n +" PageId i= "+i+" col8Min[i]= "+col8Min[i]+" PageMetacol8Min[i] "+PageMetacol8Min[i]); } } for(int i=0;i<col9.length;i++){ if(i==0){ realcol9Seg[0]=col9[i]; realcol9MinSeg[0]=col9Min[i]; } if(realcol9Seg[0]<=col9[i]){ realcol9Seg[0]=col9[i]; } if(realcol9MinSeg[0]>=col9Min[i]){ realcol9MinSeg[0]=col9Min[i]; } if(col9[i]!=PageMetacol9[i]){ System.out.println("Wrong "+"clusterId= "+n +" PageId i= "+i+" col9[i]= "+col9[i]+" PageMetacol9[i] "+PageMetacol9[i]); } if(col9Min[i]!=PageMetacol9Min[i]){ System.out.println("Wrong "+"clusterId= "+n +" PageId i= "+i+" col9Min[i]= "+col9Min[i]+" PageMetacol9Min[i] "+PageMetacol9Min[i]); } } } } } public static class SegmentIndexRef { public int numSegs; public int numClusters; public long[] segOffsets; public long[] segPMSOffsets; public long[] segLengths; public PageMeta[][] segMetas; } public static class PageMeta { public ValPair max = null; public ValPair min = null; public int startPos; public int numPairs; public void readFields(DataInput in) throws IOException { max = new ValPair(); min = new ValPair(); max.readFields(in); min.readFields(in); startPos = in.readInt(); numPairs = in.readInt(); } } public static class ValPair { /** Reference to the raw data bytes */ public byte[] data; /** Offset of the raw data bytes in a byte array */ public int offset; /** Length of the raw data bytes */ public int length; /** Position in a specified segment */ public int pos; public void readFields(DataInput in) throws IOException { length = in.readInt(); data = new byte[length]; offset = 0; in.readFully(data); } } }