This is an automated email from the ASF dual-hosted git repository.

caogaofei pushed a commit to branch sparse_index
in repository https://gitbox.apache.org/repos/asf/incubator-iotdb.git


The following commit(s) were added to refs/heads/sparse_index by this push:
     new 2e4d13f  add index read program
2e4d13f is described below

commit 2e4d13fa5fd41a43a7efc42aceaffbf4b9e98ab0
Author: CGF <[email protected]>
AuthorDate: Mon May 20 15:33:39 2019 +0800

    add index read program
---
 .../apache/iotdb/tsfile/index/test/ReadData.java   | 65 ++++++++++++++++++++++
 .../apache/iotdb/tsfile/index/test/WriteData.java  | 26 +++++----
 2 files changed, 80 insertions(+), 11 deletions(-)

diff --git 
a/tsfile/src/main/java/org/apache/iotdb/tsfile/index/test/ReadData.java 
b/tsfile/src/main/java/org/apache/iotdb/tsfile/index/test/ReadData.java
new file mode 100644
index 0000000..9be7fc1
--- /dev/null
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/index/test/ReadData.java
@@ -0,0 +1,65 @@
+package org.apache.iotdb.tsfile.index.test;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+import org.apache.iotdb.tsfile.file.MetaMarker;
+import org.apache.iotdb.tsfile.file.header.ChunkHeader;
+import org.apache.iotdb.tsfile.file.header.PageHeader;
+import org.apache.iotdb.tsfile.file.metadata.ChunkGroupMetaData;
+import org.apache.iotdb.tsfile.file.metadata.TsDeviceMetadata;
+import org.apache.iotdb.tsfile.file.metadata.TsDeviceMetadataIndex;
+import org.apache.iotdb.tsfile.file.metadata.TsFileMetaData;
+import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
+import org.apache.iotdb.tsfile.utils.Pair;
+
+public class ReadData {
+
+  private static final String FILE_PATH = "/Users/beyyes/Desktop/99.tsfile";
+
+  public static void main(String[] args) throws IOException {
+    TsFileSequenceReader reader = new TsFileSequenceReader(FILE_PATH);
+    TsFileMetaData metaData = reader.readFileMetadata();
+    List<Pair<Long, Long>> offsetList = new ArrayList<>();
+    long startOffset = reader.position();
+    byte marker;
+    while ((marker = reader.readMarker()) != MetaMarker.SEPARATOR) {
+      switch (marker) {
+        case MetaMarker.CHUNK_HEADER:
+          ChunkHeader header = reader.readChunkHeader();
+
+          for (int j = 0; j < header.getNumOfPages(); j++) {
+            PageHeader pageHeader = 
reader.readPageHeader(header.getDataType());
+            System.out.println(String.format("page compressed size: %s, page 
point number %s",
+                pageHeader.getCompressedSize(), pageHeader.getNumOfValues()));
+            reader.readPage(pageHeader, header.getCompressionType());
+          }
+
+          break;
+        case MetaMarker.CHUNK_GROUP_FOOTER:
+          reader.readChunkGroupFooter();
+          long endOffset = reader.position();
+          offsetList.add(new Pair<>(startOffset, endOffset));
+          startOffset = endOffset;
+          break;
+        default:
+          MetaMarker.handleUnexpectedMarker(marker);
+      }
+    }
+    int offsetListIndex = 0;
+    List<TsDeviceMetadataIndex> deviceMetadataIndexList = 
metaData.getDeviceMap().values().stream()
+        .sorted((x, y) -> (int) (x.getOffset() - 
y.getOffset())).collect(Collectors.toList());
+    for (TsDeviceMetadataIndex index : deviceMetadataIndexList) {
+      TsDeviceMetadata deviceMetadata = reader.readTsDeviceMetaData(index);
+      List<ChunkGroupMetaData> chunkGroupMetaDataList = 
deviceMetadata.getChunkGroupMetaDataList();
+      for (ChunkGroupMetaData chunkGroupMetaData : chunkGroupMetaDataList) {
+        Pair<Long, Long> pair = offsetList.get(offsetListIndex++);
+        System.out.println(String.format("%s %s", 
chunkGroupMetaData.getStartOffsetOfChunkGroup(), pair.left));
+        System.out.println(String.format("%s %s", 
chunkGroupMetaData.getEndOffsetOfChunkGroup(), pair.right));
+      }
+    }
+    reader.close();
+  }
+
+}
diff --git 
a/tsfile/src/main/java/org/apache/iotdb/tsfile/index/test/WriteData.java 
b/tsfile/src/main/java/org/apache/iotdb/tsfile/index/test/WriteData.java
index dba71b2..6cb31cb 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/index/test/WriteData.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/index/test/WriteData.java
@@ -27,30 +27,34 @@ public class WriteData {
       TsFileWriter tsFileWriter = new TsFileWriter(f);
 
       // add measurements into file schema
-      for (int i = 1; i <= 5; i++) {
+      for (int i = 1; i <= 50; i++) {
         tsFileWriter
             .addMeasurement(new MeasurementSchema("sensor_" + i, 
TSDataType.FLOAT, TSEncoding.RLE));
       }
-      for (int i = 6; i <= 10; i++) {
+      for (int i = 51; i <= 100; i++) {
         tsFileWriter
             .addMeasurement(new MeasurementSchema("sensor_" + i, 
TSDataType.INT32, TSEncoding.TS_2DIFF));
       }
 
       for (long time = 1; time <= 10000; time++) {
 
-        TSRecord tsRecord = new TSRecord(time, "device_1");
+        for (int deviceId = 1; deviceId <= 5; deviceId++) {
 
-        for (int i = 1; i <= 5; i++) {
-          DataPoint dPoint1 = new FloatDataPoint("sensor_" + i, 1.0f * 
random.nextInt(100));
-          tsRecord.addTuple(dPoint1);
-        }
+          TSRecord tsRecord = new TSRecord(time, "device_" + deviceId);
+
+          for (int i = 1; i <= 50; i++) {
+            DataPoint dPoint1 = new FloatDataPoint("sensor_" + i, 1.0f * 
random.nextInt(100));
+            tsRecord.addTuple(dPoint1);
+          }
+
+          for (int i = 51; i <= 100; i++) {
+            DataPoint dPoint2 = new IntDataPoint("sensor_" + i, 
random.nextInt(100));
+            tsRecord.addTuple(dPoint2);
+          }
 
-        for (int i = 6; i <= 10; i++) {
-          DataPoint dPoint2 = new IntDataPoint("sensor_" + i, 
random.nextInt(100));
-          tsRecord.addTuple(dPoint2);
+          tsFileWriter.write(tsRecord);
         }
 
-        tsFileWriter.write(tsRecord);
       }
 
       // close TsFile

Reply via email to