Using TsFile API with Maven:
<dependency> <groupId>org.apache.tsfile</groupId> <artifactId>tsfile</artifactId> <version>2.1.1</version> </dependency>
String path = "test.tsfile"; File f = FSFactoryProducer.getFSFactory().getFile(path); String tableName = "table1"; TableSchema tableSchema = new TableSchema( tableName, Arrays.asList( new ColumnSchemaBuilder() .name("id1") .dataType(TSDataType.STRING) .category(Tablet.ColumnCategory.TAG) .build(), new ColumnSchemaBuilder() .name("id2") .dataType(TSDataType.STRING) .category(Tablet.ColumnCategory.TAG) .build(), new ColumnSchemaBuilder() .name("s1") .dataType(TSDataType.INT32) .category(Tablet.ColumnCategory.FIELD) .build(), new ColumnSchemaBuilder() .name("s2"). dataType(TSDataType.BOOLEAN) .build())); long memoryThreshold = 10 * 1024 * 1024; ITsFileWriter writer = new TsFileWriterBuilder() .file(f) .tableSchema(tableSchema) .memoryThreshold(memoryThreshold) .build();
Tablet tablet = new Tablet( Arrays.asList("id1", "id2", "s1", "s2"), Arrays.asList( TSDataType.STRING, TSDataType.STRING, TSDataType.INT32, TSDataType.BOOLEAN)); for (int row = 0; row < 5; row++) { long timestamp = row; tablet.addTimestamp(row, timestamp); tablet.addValue(row, "id1", "id1_filed_1"); tablet.addValue(row, "id2", "id2_filed_1"); tablet.addValue(row, "s1", row); tablet.addValue(row, "s2", true); } writer.write(tablet);
writer.close();
The sample code of using these interfaces is in https://github.com/apache/tsfile/blob/develop/java/examples/src/main/java/org/apache/tsfile/v4/WriteTabletWithITsFileWriter.java
String path = "test.tsfile"; File f = FSFactoryProducer.getFSFactory().getFile(path); ITsFileReader reader = new TsFileReaderBuilder() .file(f) .build();
ResultSet resultSet = reader.query(tableName, Arrays.asList("id1", "id2", "s1", "s2"), 2, 8)
ResultSetMetadata metadata = resultSet.getMetadata(); System.out.println(metadata); StringJoiner sj = new StringJoiner(" "); for (int column = 1; column <= 5; column++) { sj.add(metadata.getColumnName(column) + "(" + metadata.getColumnType(column) + ") "); } System.out.println(sj.toString()); while (resultSet.next()) { Long timeField = resultSet.getLong("Time"); String id1Field = resultSet.isNull("id1") ? null : resultSet.getString("id1"); String id2Field = resultSet.isNull("id2") ? null : resultSet.getString("id2"); Integer s1Field = resultSet.isNull("s1") ? null : resultSet.getInt(4); Boolean s2Field = resultSet.isNull("s2") ? null : resultSet.getBoolean(5); sj = new StringJoiner(" "); System.out.println( sj.add(timeField + "") .add(id1Field) .add(id2Field) .add(s1Field + "") .add(s2Field + "") .toString()); }
reader.close();
The sample code of using these interfaces is in https://github.com/apache/tsfile/blob/develop/java/examples/src/main/java/org/apache/tsfile/v4/ITsFileReaderAndITsFileWriter.java