当前位置: 首页 > news >正文

IoTDB 常见问题 QA 第三期

关于 IoTDB 的 Q & A

IoTDB Q&A 第三期持续更新!我们将定期汇总我们将定期汇总社区讨论频繁的问题,并展开进行详细回答,通过积累常见问题“小百科”,方便大家使用 IoTDB。

Q1:查询最新值 & null 数据相加方法

outside_default.png

问题现象 1

如果我想查 1000 个点的最新值,这些点的设备地址可能都不相同,那么我怎么查?

outside_default.png

解决方案

1. from 后面可以写多个设备

2. select 后面也可以写多个测点

3. 还可以用通配符

outside_default.png

问题现象 2

在版本 1.1.1 中,group by 遇到两列数据相加时,其中一列为 null,另一列属性不为 null,导致两者相加之后为 null,有类似 ifnull 的函数处理这种问题吗?

以下是 SQL:

select (last_value(APM.1value) +last_value(APM2.value)) as val from root.dec group by ([10000,20000), 60s,10s)alse])

outside_default.png

解决方案

可以用 case when 来实现,用户手册中有使用参考:

https://iotdb.apache.org/zh/UserGuide/latest/SQL-Manual/Function-and-Expression.html#case

Q2:集群中某一节点掉线导致删除序列失败

outside_default.png

问题

1.3.2 版本三台机器的集群部署,删除时间序列时,三台机器都在线没问题,掉了一台机器之后报错,请问是什么原因?

6a28fe46ba819e2e93f2d7becc58b9aa.png

outside_default.png

原因

当前版本中,删除序列时所有元数据引擎的缓存都需要强一致性失效,某一节点不能成功则全部失败。因此元数据删除操作是必须要求所有节点都在线的。

outside_default.png

方案

恢复集群异常节点的状态,再进行删除操作。

Q3:查询时报可用内存不足

outside_default.png

现象

3C3D 集群中,进行查询时报可用内存不足,即使是 show devices 这样简单的查询也会报内存不足。

778f968ef7edd7d9ce4562fd86920be2.png

outside_default.png

原因

1. 客户目前使用的 JDK 版本是 1.8, 该版本 JDK 对 GC 控制效果不佳,有可能出现可用内存不足的情况,同时 GC 耗时较长,内存得不到及时释放。

b1291cbce37f344f1fd8408954e6719d.png

2. 集群 3 个节点之间网络延迟不一致,影响了集群间通信,导致节点之间吞吐不一致。

910803a1066e0d5488962d06fee1e683.png

outside_default.png

解决方案

1. 升级 JDK 版本,由 JDK1.8 升级到 JDK17, 高版本 JDK 相比低版本有如下提升:

  • 性能优化:JDK 17 的默认垃圾收集算法为 G1,提供了更好的吞吐量和更短的停顿时间,这对于提高应用程序的整体性能和用户体验非常有帮助。

  • 更好的内存管理:JDK 17 提供了更先进的内存管理功能,包括更强的封装和更有效的内存分配策略,这有助于提高内存使用效率和减少内存泄漏。

2. 解决集群间网络延迟不一致的问题。

采用上述解决方案后,查询可用内存不足的问题得到解决,同时查询效率得到明显提升。

outside_default.png

启示

以后如果遇到集群性能发挥不佳的情况,可以排查一下集群间的网络延迟情况,这个对集群性能影响还是比较大的。

Q4:Continuous Query 在 ConfigNode 运行还是在 DataNode 运行

outside_default.png

问题

请问 Continuous Query 在 ConfigNode 运行还是在 DataNode 运行?

outside_default.png

解答

Continuous Query 执行阶段运行在 DataNode 中,但 Continuous Query 的调度和控制阶段(比如定时向 DataNode 发起查询)是在 ConfigNode 发生的。

IoTDB 中的 ConfigNode 仅用于做集群管理及节点调度等,所有与元数据/数据相关的操作均在 DataNode 节点上进行。

Q5:IoTDB 升级后 Trigger 不可用

outside_default.png

问题现象

目前将 1.3.2 版本升级到了 1.3.3(通过替换 lib 的方式)。替换后发现原有触发器,show triggers 显示 active,但实际并未生效。卸载安装后依旧无法监听路径上的插入数据,不知道触发器逻辑是否有变更?没有发现异常日志,回退 1.3.2 版本后正常。

outside_default.png

原因

Apache TsFile 目前已经独立成了一个项目,原来在 TsFile 下的类的包名都发生了变化,因此 Trigger 中依赖的 TsFile 路径发生了变化,需要重新打包注册。

outside_default.png

方案

  • 需要更新依赖版本 iotdb-server 重新打包注册插件。

  • UDF、Pipe 同理。

Q6:数据类型相关问题

指定数据类型

outside_default.png

问题 1

通过 tools/import-data.sh 导入数据时,发现默认推断类型配置没有生效,请问是什么原因?

outside_default.png

现象

715e07b3988005be0d65364e3d15351b.jpeg

6916cfd3f1ab7804c4fcf494bcefa7c4.jpeg

outside_default.png

解决方案

通过 tools/import-data.sh 命令导入数据时,需要指定 -typeInfer 参数,用于指定类型推断规则,如:

<srcTsDataType1=dstTsDataType1,srcTsDataType2=dstTsDataType2,...>

  • srcTsDataType 包括 boolean,int,long,float,double,NaN;

  • dstTsDataType 包括 boolean,int,long,float,double,text;

  • 当 srcTsDataType 为 boolean,dstTsDataType 只能为 boolean 或 text;

  • 当 srcTsDataType 为 NaN, dstTsDataType 只能为 float, double 或 text;

  • 当 srcTsDataType 为数值类型, dstTsDataType 的精度需要高于 srcTsDataType。

设置举例:-typeInfer boolean=text,float=double。

数据小数点位数是否影响查询性能

outside_default.png

问题 2

存 double 型数据,截短保留 2 位小数和不截短,在查询效率和速度上有没有区别?

outside_default.png

回答

没有,double 的长度和小数位数没太大关系。

升级后数据转换问题

outside_default.png

问题 3

90f7bee4d7784ee9f19600a4a8095a30.jpeg

上面的查询在 1.0 版本是没问题的,1.3.2 版本就提示转换错误,这个可以设置吗,还是新版本只能这样转换?

outside_default.png

回答

这个是因为尝试将字符串 'bad' 转成 float 时出错了。

3696daa9045ebb3d2a41144e75cb0469.png

也可用正则表达式替换处理:

select avg(cast(regexreplace(v, 'regex'='^[A-Za-z]+$', 'replace'='1', 'limit'='2'), 'type'='FLOAT')) as V, 
avg(cast(regexreplace(v1, "regex"="^[A-Za-z]+$", "replace"="0", "limit"="1"), 'type'='FLOAT')) as V1 from root.ln.d2 where time>=2024-11-20 00:00:00 and time<=2024-11-26 00:00:00 group by ([2024-11-20T00:00:00,2024-11-26T00:00:00 ),1d)

规上企业应用实例

能源电力:中核武汉|国网信通产业集团|华润电力|大唐先一|上海电气国轩|清安储能|某储能厂商|太极股份

航天航空:中航机载共性|北邮一号卫星

钢铁、金属冶炼:宝武钢铁|中冶赛迪|中国恩菲

交通运输:中车四方|长安汽车|城建智控|德国铁路

智慧工厂与物联:PCB 龙头企业|博世力士乐|德国宝马|北斗智慧物联|京东|昆仑数据|怡养科技|绍兴安瑞思

a2dace37b29500c8d0363a568920b6c4.gif

f583a58f2f06b57996bbc28120ab5bbc.jpeg

f2a377a5e48c81e11cfc10689b9184c3.jpeg

758532c45d94ef08e119028a59538d1e.jpeg

1a0e82932559c1c1d324cbd22714530f.gif

http://www.lryc.cn/news/521225.html

相关文章:

  • RabbitMQ---消息确认和持久化
  • 《鸿蒙Next旅游应用:人工智能赋能个性化与智能导览新体验》
  • 微信小程序获取当前页面路径,登录成功后重定向回原页面
  • 【9.2】Golang后端开发系列--Gin路由定义与实战使用
  • 【微信小程序】let和const-综合实训
  • 图匹配算法(涵盖近似图匹配)
  • java线程——Thread
  • MySQL8.0新特性
  • Oracle EBS GL定期盘存WIP日记账无法过账数据修复
  • 【绝对无坑】Mongodb获取集合的字段以及数据类型信息
  • 【Git版本控制器--1】Git的基本操作--本地仓库
  • C++并发编程之无锁数据结构及其优缺点
  • Ubuntu上,ffmpeg如何使用cuda硬件解码、编码、转码加速
  • rclone,云存储备份和迁移的瑞士军刀,千字常文解析,附下载链接和安装操作步骤...
  • Ubuntu | 系统软件安装系列指导说明
  • 队列(算法十三)
  • vLLM私有化部署大语言模型LLM
  • OpenAI Whisper:语音识别技术的革新者—深入架构与参数
  • 基于当前最前沿的前端(Vue3 + Vite + Antdv)和后台(Spring boot)实现的低代码开发平台
  • 【Rust】错误处理机制
  • Logback日志技术
  • 9分布式微服务架构
  • Leecode刷题C语言之统计重新排列后包含另一个字符串的子字符串数目②
  • HTML和CSS相关的问题,为什么页面加载速度慢?
  • LiveGBS流媒体平台GB/T28181常见问题-没有收到视频流播放时候提示none rtp data receive未收到摄像头推流如何处理?
  • Flask表单处理与验证
  • 正泰电工携手图扑:变电站数字孪生巡检平台
  • 瑞芯微 RK 系列 RK3588 使用 ffmpeg-rockchip 实现 MPP 视频硬件编解码-代码版
  • uniapp 预加载分包,减少loading
  • c#删除文件和目录到回收站