Quick Start
March 4, 2025About 1 min
Quick Start
Dependencies
- JDK >=1.8
- Maven >=3.6
Installation Method
Clone the source code from git:
git clone https://github.com/apache/tsfile.git
Run Maven to compile in the TsFile root directory:
mvn clean install -P with-java -DskipTests
Using TsFile API with Maven:
<dependency>
<groupId>org.apache.tsfile</groupId>
<artifactId>tsfile</artifactId>
<version>2.0.1</version>
</dependency>
Writing Process
Construct ITsFileWriter
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();
Write Data
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);
Close File
writer.close();
Sample Code
The sample code of using these interfaces is in https://github.com/apache/tsfile/blob/rc/2.0.1/java/examples/src/main/java/org/apache/tsfile/v4/WriteTabletWithITsFileWriter.java
Query Process
Construct ITsFileReader
String path = "test.tsfile";
File f = FSFactoryProducer.getFSFactory().getFile(path);
ITsFileReader reader =
new TsFileReaderBuilder()
.file(f)
.build();
Construct Query Request
ResultSet resultSet = reader.query(tableName, Arrays.asList("id1", "id2", "s1", "s2"), 2, 8)
Query Data
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());
}
Close File
reader.close();
Sample Code
The sample code of using these interfaces is in https://github.com/apache/tsfile/blob/rc/2.0.1/java/examples/src/main/java/org/apache/tsfile/v4/ITsFileReaderAndITsFileWriter.java