Apache Doris 2.3 以下的版本会存在一个 bug,导致数据在合并时存在异常,在后续查询该字段数据时会提示

[1105] [HY000]: errCode = 2, detailMessage = (192.168.15.228)[CANCELLED]failed to initialize storage reader. tablet=106408, res=[NOT_IMPLEMENTED_ERROR]to be implemented 0# doris::RowwiseIterator::next_block_view(std::vector<doris::vectorized::IteratorRowRef, std::allocator<doris::vectorized::IteratorRowRef> >*) at /home/zcp/repo_center/doris_release/doris/be/src/olap/iterators.h:147

由于在 Google 直接搜索解决方案时并没有看到非常好的方式,所以此处将我的一些处理方式分享一下:

前置知识

在 Doris 中,每一个表都会有一个对应的合并策略,我们可以通过 GET /api/compaction/show?tablet_id={int} 这个 API 来查看指定tablet_id的压缩策略等详细信息。

关于这个 API的详情可以查看 这里

在 Doris 中包含的压缩策略有:

size_based:基于数据大小的策略。当累积的数据大小达到一定阈值时,触发累积 Compaction。它允许系统根据数据增长自动调整 Compaction 的频率。

time_based:基于时间的策略。无论数据大小如何,只要达到一定的时间间隔,就会触发 Compaction。

incremental:增量策略,通常是指只合并最近添加的数据文件。

full:全量策略,指的是合并所有的数据文件,不管它们的新旧。

表数据修复

了解了上述的压缩策略后,就可以发现,我们数据的分片文件本身没有丢失的情况下,只要重新进行一次数据的合并即可,采用 full 策略,无论新旧文件

全部执行一次数据合并,就可以解决该问题。

在 Doris 的架构中,存在 FE 和 BE,BE 的节点本身会开启 8040 的http接口,这个接口是用于管理 BE 使用的。

我们再看一下上述的异常,异常提示是 tablet 106408 存在异常。 failed to initialize storage reader. tablet=106408

此时我们根据自己的 BE 节点所在的 IP 直接访问: http://IP:8040/api/meta/header/106408

会得到针对该 tablet 的详细元数据信息

此处我们会发现该 tablet 所对应的 table 是 "table_id": 106227。 此处要注意哦:table 和 tablet 是两个不同的概念。

获取到异常表的 Id 后,我们就可以登录到对应的 BE 服务器上执行:

curl -X POST "http://localhost:8040/api/compaction/run?table_id=106227&compact_type=full"

执行成功后,等待片刻,再执行对应的 sql 查询,会发现异常解决解决了、、

关于compaction api 可以看这里

终极解决方案

终极解决方案就是升级Doris 的版本,2.1.3 的版本已经修复了该问题,只要是使用 2.1.3 以及以上的版本即可。

Doris failed to initialize storage reader. tablet=106408, res=[NOT_IMPLEMENTED_ERROR]to be implemented的更多相关文章

  1. 配置php时。提示的错误session_start(): Failed to initialize storage module解决办法

    当浏览器输入访问地址后 报这样的错时----session_start(): Failed to initialize storage module 进入到此目录vi /usr/local/php/e ...

  2. Failed to initialize storage module: user 的解决方式

    网上提供了一种解决方法就是在session_start()前把session的存储方式改为files,即加入以下一句代码 if (ini_get('session.save_handler') !== ...

  3. ERROR 1872 (HY000): Slave failed to initialize relay log info structure from the repository

    salve复制线程停止,尝试start slave 时报ERROR 1872错误mysql> system perror 1872 MySQL error code 1872 (ER_SLAVE ...

  4. Slave failed to initialize relay log info structure from the repository

    现象 查看slave 服务状态 show slave status\G; 错误 Last_Errno: 1872 Last_Error: Slave failed to initialize rela ...

  5. Failed to initialize the Common Language Runtime

    今天在SQL Server 2008中执行存储过程的时候报以下错误: Msg , Level , State , Procedure usp_QueryRealTimeRoomInfo, Line F ...

  6. 解决 ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510)异常

    ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510) 解决方案: 在java_opts="-Xd ...

  7. Eclipse远程调试出现“JDWP Transport dt_socket failed to initialize”的解决方案

    欢迎关注我的社交账号: 博客园地址: http://www.cnblogs.com/jiangxinnju/p/4781259.html GitHub地址: https://github.com/ji ...

  8. error: failed to initialize alpm library

    这个问题出在archlinux上面 [root@sarch pacman]# pacman -Syuerror: failed to initialize alpm library(database ...

  9. 如何解决WebkitBrowser使用出错“Failed to initialize activation context”

    本文转载自:http://www.cnblogs.com/supjia/p/4695671.html 本篇文章主要介绍了"如何解决WebkitBrowser使用出错“Failed to in ...

  10. Tomcat启动报错:Failed to initialize end point associated with ProtocolHandler ["http-apr-8080"]

    在用MyEclipse做开发,启动Tomcat的时候,控制台老是报错Failed to initialize end point associated with ProtocolHandler [&q ...

随机推荐

  1. 【超强SQL】WordPress批量修改指定分类下所有文章状态

    前阵子主题君的某一个手游下载站的某一个分类,被百度K了,导致整个分类的文章收录都没了,这时候如果想要回复权重,就需要把这个分类的文章都删除了. 下面主题君给大家分享一段巨牛逼的SQL, WordPre ...

  2. C# java 的 equals 与 == 的区别

    C# String a = "宜春"; String b = new String(new char[] { '宜', '春' }); String c = b; //注意这里是引 ...

  3. nginx学习记录【二】nginx跟.net core结合,实现一个域名访问多个.net core应用

    1.实现转发 打开conf下的nginx.conf文件,如下图: 2.添加.net core网站的转发 按下面的进行修改,修改完后,就把localhost的80转发到了https://localhos ...

  4. 【论文笔记】轻量级网络MobileNet

    [深度学习]总目录 MobileNet V1:<MobileNets: Efficient Convolutional Neural Networks for MobileVision Appl ...

  5. ClickHouse + ClickVisual 构建日志平台

    越来越多的互联网公司开始尝试 ClickHouse 存储日志,比如映客.快手.携程.唯品会.石墨文档,但是 ClickHouse 存储日志缺少对应的可视化方案,石墨文档开源了 ClickVisual ...

  6. OpenWrt安装配置Tailscale

    什么是tailscale? Tailscale就是基于Wireguard的一个联网工具,无需公网地址,通过去中心化,实现各个节点之间点对点的连接.配置简单友好,支持的各类平台和客户端. 相比较其他组网 ...

  7. 每天打卡一小时 第三十一天 PTA520钻石 争霸赛

    第一题 源代码 #include<iostream> using namespace std; int main() { int n; cin>>n; cout<< ...

  8. logback日志格式模板,基于TraceId搜索完整的请求链路日志

    logback日志格式模板,基于TraceId搜索完整的请求链路日志 日志打印格式:(可以基于TraceId:4d484c2a110eae9d来搜索完整的请求链路日志2023-08-28 15:06: ...

  9. mysql 联合表查询从表即使有索引依然ALL的一个原因-索引ALL解决,字符编码方式不一致导致全表搜索

    mysql 联合表查询从表即使有索引依然ALL的一个原因-索引ALL解决,字符编码方式不一致导致全表搜索那就是主表和从表的关联字段的编码方式不一样!!! 产生的现象: 解决之后,正确的使用了t2.or ...

  10. python根据模板文件批量创建文件脚本

    1.模板文件.txt 欢迎访问这座城市:德州行政区域编号:371400根据高德地图(https://lbs.amap.com/tools/picker)查询经纬度查询: jingdu,weiduBYE ...