接口定义 - Java
2025年7月23日大约 3 分钟
接口定义 - Java
写入接口
ITsFileWriter
用于将数据写入 TsFile
interface ITsFileWriter extends AutoCloseable {
// 写入数据
void write(Tablet tablet);
// 关闭写入器
void close();
}
TsFileWriterBuilder
用于构建 ITsFileWriter
class TsFileWriterBuilder {
// 构建 ITsFileWriter 对象
public ITsFileWriter build();
// 目标文件
public TsFileWriterBuilder file(File file);
// 用于构建表结构
public TsFileWriterBuilder tableSchema(TableSchema schema);
// 用于限制写入时的内存使用大小
public TsFileWriterBuilder memoryThreshold(long memoryThreshold);
}
TableSchema
描述表结构的数据组织方式
class TableSchema {
// 构造函数
public TableSchema(String tableName, List<ColumnSchema> columnSchemaList);
}
class ColumnSchema {
// 构造函数
public ColumnSchema(String columnName, TSDataType dataType, ColumnCategory columnCategory);
// 获取列名
public String getColumnName();
// 获取列的数据类型
public TSDataType getDataType();
// 获取列的类别
public Tablet.ColumnCategory getColumnCategory();
}
class ColumnSchemaBuilder {
// 构建 ColumnSchema 对象
public ColumnSchema build();
// 设置列名
public ColumnSchemaBuilder name(String columnName);
// 设置列的数据类型
public ColumnSchemaBuilder dataType(TSDataType columnType);
// 设置列的类别
public ColumnSchemaBuilder category(ColumnCategory columnCategory);
// 支持的数据类型
enum TSDataType {
BOOLEAN, // 布尔型
INT32, // 32位整数
INT64, // 64位整数
FLOAT, // 单精度浮点数
DOUBLE, // 双精度浮点数
TIMESTAMP, // 时间戳
TEXT, // 文本
DATE, // 日期
BLOB, // 二进制大对象
STRING; // 字符串
}
// 支持的列类别
enum ColumnCategory {
TAG, // 标签列
FIELD // 测点列
}
}
Tablet
class Tablet {
// 构造函数
public Tablet(List<String> columnNameList, List<TSDataType> dataTypeList);
public Tablet(List<String> columnNameList, List<TSDataType> dataTypeList, int maxRowNum);
// 添加时间戳
void addTimestamp(int rowIndex, long timestamp);
// 添加值
// 基于列名添加值
void addValue(int rowIndex, String columnName, int val);
void addValue(int rowIndex, String columnName, long val);
void addValue(int rowIndex, String columnName, float val);
void addValue(int rowIndex, String columnName, double val);
void addValue(int rowIndex, String columnName, boolean val);
void addValue(int rowIndex, String columnName, String val);
void addValue(int rowIndex, String columnName, byte[] val);
void addValue(int rowIndex, String columnName, LocalDate val);
// 基于索引添加值
void addValue(int rowIndex, int columnIndex, int val);
void addValue(int rowIndex, int columnIndex, long val);
void addValue(int rowIndex, int columnIndex, float val);
void addValue(int rowIndex, int columnIndex, double val);
void addValue(int rowIndex, int columnIndex, boolean val);
void addValue(int rowIndex, int columnIndex, String val);
void addValue(int rowIndex, int columnIndex, byte[] val);
void addValue(int rowIndex, int columnIndex, LocalDate val);
}
Read Interface
ITsFileReader
用于在 TsFile 中查询数据。
interface ITsFileReader extends AutoCloseable {
// 用于执行查询并返回结果
ResultSet query(String tableName, List<String> columnNames, long startTime, long endTime);
// 返回 tsfile 中指定表名(tableName)的表结构信息
Optional<TableSchema> getTableSchemas(String tableName);
// 获取 tsfile 中所有表的结构信息
List<TableSchema> getAllTableSchema();
// 关闭查询
void close();
}
TsFileReaderBuilder
用于构建 ITsFileReader
class TsFileReaderBuilder {
// 构建 ITsFileReader 对象
public ITsFileReader build();
// 目标文件
public TsFileReaderBuilder file(File file);
}
ResultSet
查询的结果集
interface ResultSet extends AutoCloseable {
// 将游标移动到下一行,并返回是否还有数据
boolean next();
// 获取当前行某一列的值
int getInt(String columnName);
int getInt(int columnIndex);
long getLong(String columnName);
long getLong(int columnIndex);
float getFloat(String columnName);
float getFloat(int columnIndex);
double getDouble(String columnName);
double getDouble(int columnIndex);
boolean getBoolean(String columnName);
boolean getBoolean(int columnIndex);
String getString(String columnName);
String getString(int columnIndex);
LocalDate getDate(String columnName);
LocalDate getDate(int columnIndex);
byte[] getBinary(String columnName);
byte[] getBinary(int columnIndex);
// 判断当前行某一列是否为 NULL
boolean isNull(String columnName);
boolean isNull(int columnIndex);
// 关闭当前结果集
void close();
// 获取结果集的元数据信息
ResultSetMetadata getMetadata();
}
ResultSetMetadata
用于获取结果集的元数据信息
interface ResultSetMetadata {
// 获取结果集中第 N 列的列名
String getColumnName(int columnIndex);
// 获取结果集中第 N 列的数据类型
TSDataType getColumnType(int columnIndex);
}