首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

Doris failed to initialize storage reader. tablet=106408, res=[NOT_IMPLEMENTED_ERROR]to be implemented

编程知识
2024年07月17日 17:52

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 以及以上的版本即可。

From:https://www.cnblogs.com/zh94/p/18308100
本文地址: http://shuzixingkong.net/article/89
0评论
提交 加载更多评论
其他文章 设计模式-C#实现简单工厂模式
前言 上一篇文章写了如何使用RabbitMQ做个简单的发送邮件项目,然后评论也是比较多,也是准备去学习一下如何确保RabbitMQ的消息可靠性,但是由于时间原因,先来说说设计模式中的简单工厂模式吧! 在了解简单工厂模式之前,我们要知道C#是一款面向对象的高级程序语言。它有3大特性,封装、继承、多态。
设计模式-C#实现简单工厂模式
为视觉语言多模态模型进行偏好优化
为视觉语言多模态模型进行偏好优化 训练模型使得它能够理解并预测人类偏好是一项比较复杂的任务。诸如 SFT (Supervised finetuning) 的传统的方法一般都需要耗费较大成本,因为这些算法需要对数据打上特定的标签。而偏好优化 (Preference Optimization) 作为一种
为视觉语言多模态模型进行偏好优化 为视觉语言多模态模型进行偏好优化 为视觉语言多模态模型进行偏好优化
解码 xsync 的 map 实现
解码 xsync 的 map 实现 最近在寻找 Go 的并发 map 库的时候,翻到一个 github 宝藏库,xsync (https://github.com/puzpuzpuz/xsync) 。这个库提供了一些支持并发的数据结构,计数器Counter,哈希 Map,队列Queue。我着重看了下
解码 xsync 的 map 实现 解码 xsync 的 map 实现 解码 xsync 的 map 实现
开启GitLab的邮件通知功能以及一些外观配置
前言 维护GitLab的同事离职了 刚好又有新实习生需要申请账号 只能我来出手了 其实之前安装了 GitLab 之后一直还是用得比较粗糙的 属于是勉强能用的水平,有些配置都还没改好 这次把邮件功能、域名、外观啥的配置好了,写篇文章记录一下 目录结构 先来回顾一下 GitLab 的目录结构 我们的 G
开启GitLab的邮件通知功能以及一些外观配置
共享库soname机制
目录前言共享库版本号共享库命名机制realnamesonamelinkname总结参考文章 前言 在使用第三方库时,我们会发现第三方库会提供一组文件,他们的后缀一般是.so(如libname.so),.so.x和.so.x.y.z。本文讨论他们之间的关系。 共享库版本号 共享库一般会由于修复bug或
共享库soname机制
BigDecimal的精度与刻度
BigDecimal是Java中用于高精度算术运算的类。当您需要精确地处理非常大或非常小的数字时,例如在金融计算中,它特别有用。由于众所周知得原因,Double这种类型在某些情况下会出现丢失精度的问题,所以在需要对较为敏感的数据(比如与金额有关的)进行运算时,我们都会用BigDecimal。但是,用
BigDecimal的精度与刻度 BigDecimal的精度与刻度
js需要同时发起百条接口请求怎么办?--通过Promise实现分批处理接口请求
如何通过 Promise 实现百条接口请求? 实际项目中遇到需要发起上百条Promise接口请求怎么办? 前言 不知你项目中有没有遇到过这样的情况,反正我的实际工作项目中真的遇到了这种玩意,一个接口获取一份列表,列表中的每一项都有一个属性需要通过另一个请求来逐一赋值,然后就有了这份封装 真的是很多功
拯救SQL Server数据库事务日志文件损坏的终极大招
拯救SQL Server数据库事务日志文件损坏的终极大招 在数据库的日常管理中,我们不可避免的会遇到服务器突然断电(没有进行电源冗余),服务器故障或者 SQL Server 服务突然停掉, 头大的是ldf事务日志文件也损毁了,SQL Server服务器起来之后,发现数据库处于&quot;Recove
拯救SQL Server数据库事务日志文件损坏的终极大招 拯救SQL Server数据库事务日志文件损坏的终极大招 拯救SQL Server数据库事务日志文件损坏的终极大招