加载 TsFile
介绍
加载外部 tsfile 文件工具允许用户向正在运行中的 Apache IoTDB 中加载、删除或移出 tsfile 文件。
使用方式
用户通过 Cli 工具或 JDBC 向 Apache IoTDB 系统发送指定命令实现文件加载的功能。
加载 tsfile 文件
加载 tsfile 文件的指令为:load '<path/dir>' [autoregister=true/false][,sglevel=int]
该指令有两种用法:
- 通过指定文件路径(绝对路径)加载单 tsfile 文件。
第二个参数表示待加载的 tsfile 文件的路径,其中文件名称需要符合 tsfile 的命名规范,即{systemTime}-{versionNum}-{in_space_compaction_num}-{cross_space_compaction_num}.tsfile
。load 命令有 2 个可选项,分别是 autoregister,值域为 true/false,sglevel,值域为整数。选项之间无顺序要求。
AUTOREGISTER 选项表示当待加载的 tsfile 文件中时间序列对应的元数据不存在时,用户可以选择是否自动创建 schema ,参数为 true 表示自动创建 schema,相反 false 表示不创建,缺省时默认创建 schema。
SGLEVEL 选项,当 tsfile 对应的存储组不存在时,用户可以通过 sglevel 参数的值来制定存储组的级别,默认为iotdb-engine.properties
中设置的级别。例如当设置 level 参数为1时表明此 tsfile 中所有时间序列中层级为1的前缀路径是存储组,即若存在设备 root.sg.d1.s1,此时 root.sg 被指定为存储组。
若待加载的 tsfile 文件对应的.resource
文件存在,会被一并加载至 Apache IoTDB 数据文件的目录和引擎中,否则将通过 tsfile 文件重新生成对应的.resource
文件,即加载的 tsfile 文件所对应的.resource
文件不是必要的。
示例:
load '/Users/Desktop/data/1575028885956-101-0.tsfile'
load '/Users/Desktop/data/1575028885956-101-0.tsfile' autoregister=false
load '/Users/Desktop/data/1575028885956-101-0.tsfile' autoregister=true
load '/Users/Desktop/data/1575028885956-101-0.tsfile' sglevel=1
load '/Users/Desktop/data/1575028885956-101-0.tsfile' autoregister=true,sglevel=1
load '/Users/Desktop/data/1575028885956-101-0.tsfile' autoregister=false
load '/Users/Desktop/data/1575028885956-101-0.tsfile' autoregister=false,sglevel=1
- 通过指定文件夹路径(绝对路径)批量加载文件。
第二个参数表示待加载的 tsfile 文件夹的路径,其中文件夹内所有文件名称需要符合 tsfile 的命名规范,即{systemTime}-{versionNum}-{in_space_compaction_num}-{cross_space_compaction_num}.tsfile
。选项意义与加载单个 tsfile 文件相同。
示例:
load '/Users/Desktop/data'
load '/Users/Desktop/data' autoregister=false
load '/Users/Desktop/data' autoregister=true
load '/Users/Desktop/data' autoregister=true,sglevel=1
远程加载
通常情况下,文件路径必须是 IoTDB 实例所在机器的本地文件路径,在 IoTDB 0.13.5 及之后的版本中,文件路径新增支持 HTTP 风格的 URI,可以通过 HTTP 协议远程加载单个文件。格式为 load 'http://host:port/filePath'
。
例如,如果您的 IoTDB 实例在 IP 地址为 168.121.0.1 的机器 A 上运行,您希望将 IP 地址为 168.121.0.2 机器 B 上的文件/root/data/1-1-0-0.tsfile
加载进 IoTDB 实例,您需要按照以下步骤操作
- 在机器 B 上启动 HTTP 服务,例如您可以使用 python 命令
python -m http.server
来启动一个简单的 HTTP 服务。 - 使用 Cli 工具连接到机器 A 上的 IoTDB 实例
- 输入 SQL 指令
load 'http://168.121.0.2:8000/root/data/1-1-0-0.tsfile'
- 等待加载完成
请注意:采用远程加载的情况下,仅支持加载单个文件,即路径参数必须为单个 TsFile 文件路径。同时如果您的 TsFile 经历过删除操作(即,TsFile 文件有附带的 .mods 文件),也不推荐您使用远程加载,这将导致本该被删除的数据在加载之后仍然没有被删除。
删除 tsfile 文件
删除 tsfile 文件的指令为:remove '<path>'
该指令通过指定文件路径删除 tsfile 文件,具体做法是将该 tsfile 和其对应的.resource
和.modification
文件全部删除。
示例:
remove '/Users/Desktop/data/data/root.vehicle/0/0/1575028885956-101-0.tsfile'
卸载 tsfile 文件至指定目录
卸载 tsfile 文件的指令为:unload '<path>' '<dir>'
该指令将指定路径的 tsfile 文件卸载并移动至目标文件夹(绝对路径)中,具体做法是在引擎中卸载该 tsfile,并将该 tsfile 文件和其对应的.resource
文件移动到目标文件夹下
示例:
unload '/Users/Desktop/data/data/root.vehicle/0/0/1575028885956-101-0.tsfile' '/data/data/tmp'