当前发布版本是 2.1.0,可以这样引用
<dependencies> <dependency> <groupId>org.apache.tsfile</groupId> <artifactId>tsfile</artifactId> <version>2.1.0</version> </dependency> <dependencies>
数据写入主要通过 TsFileWriter 完成。
创建 TsFileWriter
File f = new File("test.tsfile"); TsFileWriter tsFileWriter = new TsFileWriter(f);
注册时间序列
List<MeasurementSchema> schema1 = new ArrayList<>(); schemas.add(new MeasurementSchema("电压", TSDataType.FLOAT)); schemas.add(new MeasurementSchema("电流", TSDataType.FLOAT)); tsFileWriter.registerTimeseries(new Path("太阳能板1"), schema1); List<MeasurementSchema> schema2 = new ArrayList<>(); schemas.add(new MeasurementSchema("电压", TSDataType.FLOAT)); schemas.add(new MeasurementSchema("电流", TSDataType.FLOAT)); schemas.add(new MeasurementSchema("风速", TSDataType.FLOAT)); tsFileWriter.registerTimeseries(new Path("风机1"), schema2);
写入数据
TSRecord tsRecord = new TSRecord(1, "太阳能板1"); tsRecord.addTuple(DataPoint.getDataPoint(TSDataType.FLOAT, "电压", 1.1f)); tsRecord.addTuple(DataPoint.getDataPoint(TSDataType.FLOAT, "电流", 2.2f)); tsFileWriter.write(tsRecord);
调用close方法来关闭文件,关闭后才能进行查询。
tsFileWriter.close();
写入 TsFile 完整示例
数据查询主要通过 TsFileReader 完成。
创建 TsFileReader
TsFileSequenceReader reader = new TsFileSequenceReader(path); TsFileReader tsFileReader = new TsFileReader(reader);
构造查询条件
ArrayList<Path> paths = new ArrayList<>(); paths.add(new Path("太阳能板1", "电压")); paths.add(new Path("太阳能板1", "电流")); IExpression timeFilter = BinaryExpression.and( new GlobalTimeExpression(TimeFilterApi.gtEq(1L)), new GlobalTimeExpression(TimeFilterApi.ltEq(10L))); QueryExpression queryExpression = QueryExpression.create(paths, timeFilter);
查询数据
QueryDataSet queryDataSet = readTsFile.query(queryExpression); while (queryDataSet.hasNext()) { queryDataSet.next(); }
关闭文件
tsFileReader.close();
读取 TsFile 完整示例
构建 Java 版的 TsFile,必须要安装以下依赖:
mvn clean package -P with-java -DskipTests
mvn install -P with-java -DskipTests