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