This is an automated email from the ASF dual-hosted git repository. haonan pushed a commit to branch jira599 in repository https://gitbox.apache.org/repos/asf/incubator-iotdb.git
commit 9848f4cb8a868ba966ab7a1f003e6f068803ec61 Author: HTHou <[email protected]> AuthorDate: Fri May 8 11:24:40 2020 +0800 fix TsFileSketchTool --- .../apache/iotdb/db/tools/TsFileSketchTool.java | 63 ++++++++++------------ .../file/metadata/statistics/BinaryStatistics.java | 2 +- .../iotdb/tsfile/read/TsFileSequenceReader.java | 5 +- 3 files changed, 33 insertions(+), 37 deletions(-) diff --git a/server/src/main/java/org/apache/iotdb/db/tools/TsFileSketchTool.java b/server/src/main/java/org/apache/iotdb/db/tools/TsFileSketchTool.java index ba5651a..3507f8e 100644 --- a/server/src/main/java/org/apache/iotdb/db/tools/TsFileSketchTool.java +++ b/server/src/main/java/org/apache/iotdb/db/tools/TsFileSketchTool.java @@ -22,12 +22,14 @@ package org.apache.iotdb.db.tools; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; +import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; import org.apache.iotdb.tsfile.common.conf.TSFileConfig; import org.apache.iotdb.tsfile.file.footer.ChunkGroupFooter; +import org.apache.iotdb.tsfile.file.metadata.ChunkGroupMetadata; import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata; import org.apache.iotdb.tsfile.file.metadata.MetadataIndexEntry; import org.apache.iotdb.tsfile.file.metadata.TsFileMetadata; @@ -59,13 +61,8 @@ public class TsFileSketchTool { // get metadata information TsFileSequenceReader reader = new TsFileSequenceReader(filename); TsFileMetadata tsFileMetaData = reader.readFileMetadata(); - List<String> devices = reader.getAllDevices(); - Map<String, Map<String, List<ChunkMetadata>>> tsDeviceSeriesMetadataMap = new LinkedHashMap<>(); - for (String deviceId : devices) { - Map<String, List<ChunkMetadata>> seriesMetadataMap = reader - .readChunkMetadataInDevice(deviceId); - tsDeviceSeriesMetadataMap.put(deviceId, seriesMetadataMap); - } + List<ChunkGroupMetadata> allChunkGroupMetadata = new ArrayList<>(); + reader.selfCheck(null, allChunkGroupMetadata, new ArrayList<>(), false); // begin print StringBuilder str1 = new StringBuilder(); @@ -81,30 +78,27 @@ public class TsFileSketchTool { String.format("%20d", TSFileConfig.MAGIC_STRING.getBytes().length) + "|\t[version number] " + reader.readVersionNumber()); - // device begins - for (Entry<String, Map<String, List<ChunkMetadata>>> entry : tsDeviceSeriesMetadataMap - .entrySet()) { - printlnBoth(pw, str1.toString() + "\t[Chunks] of " + entry.getKey() + - ", num of Chunks:" + entry.getValue().size()); + // ChunkGroup begins + for (ChunkGroupMetadata chunkGroupMetadata : allChunkGroupMetadata) { + printlnBoth(pw, str1.toString() + "\t[ChunkGroup] of " + chunkGroupMetadata.getDevice() + + ", num of Chunks:" + chunkGroupMetadata.getChunkMetadataList().size()); // chunk begins long chunkEndPos = 0; - for (Entry<String, List<ChunkMetadata>> seriesMetadata : entry.getValue().entrySet()) { - for (ChunkMetadata chunkMetaData : seriesMetadata.getValue()) { - printlnBoth(pw, - String.format("%20d", chunkMetaData.getOffsetOfChunkHeader()) + "|\t[Chunk] of " - + chunkMetaData.getMeasurementUid() + ", numOfPoints:" + chunkMetaData - .getNumOfPoints() + ", time range:[" + chunkMetaData.getStartTime() + "," - + chunkMetaData.getEndTime() + "], tsDataType:" + chunkMetaData.getDataType() - + ", \n" + String.format("%20s", "") + " \t" + chunkMetaData.getStatistics()); - printlnBoth(pw, String.format("%20s", "") + "|\t\t[marker] 1"); - printlnBoth(pw, String.format("%20s", "") + "|\t\t[ChunkHeader]"); - Chunk chunk = reader.readMemChunk(chunkMetaData); - printlnBoth(pw, - String.format("%20s", "") + "|\t\t" + chunk.getHeader().getNumOfPages() + " pages"); - chunkEndPos = - chunkMetaData.getOffsetOfChunkHeader() + chunk.getHeader().getSerializedSize() - + chunk.getHeader().getDataSize(); - } + for (ChunkMetadata chunkMetadata : chunkGroupMetadata.getChunkMetadataList()) { + printlnBoth(pw, + String.format("%20d", chunkMetadata.getOffsetOfChunkHeader()) + "|\t[Chunk] of " + + chunkMetadata.getMeasurementUid() + ", numOfPoints:" + chunkMetadata + .getNumOfPoints() + ", time range:[" + chunkMetadata.getStartTime() + "," + + chunkMetadata.getEndTime() + "], tsDataType:" + chunkMetadata.getDataType() + + ", \n" + String.format("%20s", "") + " \t" + chunkMetadata.getStatistics()); + printlnBoth(pw, String.format("%20s", "") + "|\t\t[marker] 1"); + printlnBoth(pw, String.format("%20s", "") + "|\t\t[ChunkHeader]"); + Chunk chunk = reader.readMemChunk(chunkMetadata); + printlnBoth(pw, + String.format("%20s", "") + "|\t\t" + chunk.getHeader().getNumOfPages() + " pages"); + chunkEndPos = + chunkMetadata.getOffsetOfChunkHeader() + chunk.getHeader().getSerializedSize() + + chunk.getHeader().getDataSize(); } // chunkGroupFooter begins printlnBoth(pw, String.format("%20s", chunkEndPos) + "|\t[Chunk Group Footer]"); @@ -116,8 +110,8 @@ public class TsFileSketchTool { String.format("%20s", "") + "|\t\t[dataSize] " + chunkGroupFooter.getDataSize()); printlnBoth(pw, String.format("%20s", "") + "|\t\t[num of chunks] " + chunkGroupFooter .getNumberOfChunks()); - printlnBoth(pw, str1.toString() + "\t[Chunks] of " - + entry.getKey() + " ends"); + printlnBoth(pw, str1.toString() + "\t[ChunkGroup] of " + + chunkGroupMetadata.getDevice() + " ends"); } // metadata begins @@ -125,14 +119,14 @@ public class TsFileSketchTool { printlnBoth(pw, String.format("%20s", reader.getFileMetadataPos() - 1) + "|\t[marker] 2"); } else { printlnBoth(pw, - String.format("%20s", reader.readFileMetadata().getMetaOffset() + "|\t[marker] 2")); + String.format("%20s", reader.readFileMetadata().getMetaOffset()) + "|\t[marker] 2"); } for (MetadataIndexEntry metadataIndex : tsFileMetaData.getMetadataIndex().getChildren()) { printlnBoth(pw, String.format("%20s", metadataIndex.getOffset()) + "|\t[MetadataIndex] of " + metadataIndex.getName()); } - printlnBoth(pw, String.format("%20s", reader.getFileMetadataPos()) + "|\t[TsFileMetaData]"); + printlnBoth(pw, String.format("%20s", reader.getFileMetadataPos()) + "|\t[TsFileMetadata]"); printlnBoth(pw, String.format("%20s", "") + "|\t\t[num of devices] " + tsFileMetaData .getMetadataIndex().getChildren().size()); printlnBoth(pw, @@ -160,7 +154,7 @@ public class TsFileSketchTool { printlnBoth(pw, String.format("%20s", (reader.getFileMetadataPos() + reader.getFileMetadataSize())) - + "|\t[TsFileMetaDataSize] " + reader.getFileMetadataSize()); + + "|\t[TsFileMetadataSize] " + reader.getFileMetadataSize()); printlnBoth(pw, String.format("%20s", reader.getFileMetadataPos() + reader.getFileMetadataSize() + 4) @@ -173,6 +167,7 @@ public class TsFileSketchTool { printlnBoth(pw, "---------------------------------- TsFile Sketch End ----------------------------------"); + reader.close(); } } diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/statistics/BinaryStatistics.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/statistics/BinaryStatistics.java index 40173b5..6ddd7b7 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/statistics/BinaryStatistics.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/statistics/BinaryStatistics.java @@ -202,7 +202,7 @@ public class BinaryStatistics extends Statistics<Binary> { @Override public String toString() { - return super.toString() + " [fistValue:" + firstValue + ",lastValue:" + lastValue + "]"; + return super.toString() + " [firstValue:" + firstValue + ",lastValue:" + lastValue + "]"; } } diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/TsFileSequenceReader.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/TsFileSequenceReader.java index 0bd8e92..bb66368 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/TsFileSequenceReader.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/TsFileSequenceReader.java @@ -816,8 +816,9 @@ public class TsFileSequenceReader implements AutoCloseable { * * @param newSchema the schema on each time series in the file * @param chunkGroupMetadataList ChunkGroupMetadata List - * @param fastFinish if true and the file is complete, then newSchema and newMetaData parameter - * will be not modified. + * @param versionInfo version pair List + * @param fastFinish if true and the file is complete, then newSchema and chunkGroupMetadataList + * parameter will be not modified. * @return the position of the file that is fine. All data after the position in the file should * be truncated. */
