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. 图解JDK7及其早期版本HashMap扩容死锁问题

    在JDK7及其早期版本中HashMap在多线程环境下会发生扩容死锁的问题. HashMap中在创建时默认会有16个桶,有一个默认加载因子0.75,如果Map中的Entry数量达到阈值(16*0.75) ...

  2. 如何解决 IntelliJ Idea 编译 Java 项目时,找不到包或找不到符号的问题?

    执行 Maven Reimport 描述: 重新导入 Maven 包. 操作步骤: -> 选择 Project 目录右键 -> Maven -> Reimport 执行 Invali ...

  3. Base64编码解码 支持解码为 16进制

    https://base64.xhlylx.com/

  4. Specs satisfying the `flutter_twitter (from `.symlinks/plugins/flutter_twitter/ios`)` dependency were found, but they required a higher minimum deployment target

    MXFlutter的依赖发生变化,需要将iOS最低系统版本提高 修改之后,进入到MXFlutter目录,执行 flutter run 发现编译错误 咨询了下,mxflutter需要flutter为 用 ...

  5. centos os7 和redhat 7 安装yum源失败的解决办法

    首先看我的报错 [Errno 14] curl#6 - "Could not resolve host: mirrors.aliyun.com; Unknown error" yu ...

  6. Linux 提权-Cron Jobs

    本文通过 Google 翻译 Cron Jobs – Linux Privilege Escalation - Juggernaut-Sec 这篇文章所产生,本人仅是对机器翻译中部分表达别扭的字词进行 ...

  7. NSSCTF——crypto

    [鹤城杯 2021]easy_crypto [强网拟态 2021]拟态签到题 [SWPUCTF 2021 新生赛]crypto8[SWPUCTF 2021 新生赛]crypto7[SWPUCTF 20 ...

  8. 【Java面试题-基础知识03】Java线程连环问

    1.Java中的线程是什么? 在Java中,线程是程序执行流的最小单元.每个Java程序都至少有一个主线程,也称为主执行线程,它是程序开始执行时自动创建的.除了主线程外,程序员还可以创建额外的线程来执 ...

  9. 项目管理--PMBOK 读书笔记(10)【项目沟通管理】

      1.沟通技术 1)交互式沟通:双方多方之间的多项信息沟通,确保全体参与者对特定话题达成共识,回馈. 2)推式沟通:将信息发送给接收方,不确保受众理解. 3)拉式沟通:自主自行反问信息   2.沟通 ...

  10. excel计算日期天数和表格冻结首行

    excel计算日期天数和表格冻结首行 1.在单元格E35中输入公式DATEDIF(A35.B35."MD")MD表起始日期.结束日期天数差."Y" 时间段中的整 ...