如何利用 StarRocks 加速 Iceberg 数据湖的查询效率

数据湖作为一种存储各种类型数据的集中式存储系统,以其灵活性、可扩展性和低成本的优势受到越来越多企业的青睐。然而,数据湖虽然降低了数据存储成本,但在数据分析尤其是实时数据分析场景下,其性能仍存在一定瓶颈。

本文将探讨如何利用开源项目 StarRocks 来提升 Iceberg 的查询效率,为企业提供更快速、更灵活的数据分析能力。 作为 StarRocks 社区的主要贡献者和商业化公司,镜舟科技深度参与 StarRocks 项目开发,也为企业着手构建湖仓架构提供更多参考。


一、Iceberg 数据湖查询所面临的性能挑战

71acf7cb24240cca6a5c943780851e30.jpeg

Iceberg 具备强大的功能和灵活性,不过在实际应用中,工程师在处理 Iceberg 表时经常会遇到查询性能瓶颈,对于持续增长的企业来说,这不仅是生产系统产生延迟的影响,更是对整体的业务交付和决策的影响,一旦出现问题,企业需要付出成倍的成本来解决。

1. 数据读取性能瓶颈

首先,由于 Iceberg 的数据存储在分布式文件系统中,数据读取性能受到文件系统性能的限制。

数据湖中的文件级别详细信息记录虽然强大,但扫描整个表进行数据查询需要较长时间。Iceberg 的清单文件(manifest files)通常被高度压缩以节省存储空间,但对于大型清单文件,解压缩过程需要更多时间。使用 C++ 等语言读取和解析这些大型文件时,即使在最佳情况下,也可能需要较长的解析时间。

2. 多维复杂查询性能不足

其次,Iceberg 在复杂多维查询上表现受限,尤其在处理大数据集时效率不足。其索引和分区策略虽能提升性能,但在特定场景下仍显不足。快照查询虽能及时反映数据最新状态,但在复杂查询场景下,数据扫描量大增,导致查询效率下降。

综上可以看出,Iceberg 提供了强大的功能和灵活性,但同时也要求企业投入相应的技术调优策略来实现最佳的系统管理和性能。因此,对于追求高效处理复杂查询的应用场景,需要考虑更简单高效的解决方案。


二、加速 Iceberg 查询的最佳方案——StarRocks

04a4501047edc2e8df65af14b2f1fdd0.jpeg

除了分析本地存储的数据,用户也可以通过 StarRocks 提供的 External Catalog,直接连接到 Iceberg 数据湖,实现无缝集成,无需进行数据迁移也能高效查询 Iceberg 上的数据。这一特性不仅简化了操作流程,还大大降低了数据访问的延迟。

1. 通过 StarRocks 优化查询执行,显著提升查询性能

StarRocks 采用了多种优化技术,如列式存储、索引加速、并行处理等,可以显著提升查询性能。

针对 Iceberg 元数据获取与解析存在的性能问题,可以利用 StarRocks 的 MPP 架构对元数据文件进行并行读取和过滤,这一特性不仅减少了 Master 节点的压力,还显著提升元数据处理的效率,从而加快查询计划的生成速度。

StarRocks 的 CBO 优化器能够收集外部表(包括 Iceberg 表)的统计信息,并利用这些信息生成高效的执行计划。特别是 3.2 版本开始,StarRocks 能够更精准地评估查询成本,选择最优的执行路径

2. 缓存(Data Cache)与物化视图,提供不输数仓的查询体验

为了进一步提升查询效率,可以在 StarRocks 中部署缓存机制来存储热点数据。当查询请求到达时,如果缓存中有相关数据,则可以直接从缓存中读取数据而无需访问 Iceberg。

此外,在计算逻辑较为复杂、性能以及并发要求更高的场景下,可以利用预计算策略来生成物化视图,将复杂的查询结果预先计算并存储起来,以加快查询响应速度。目前,StarRocks 支持同步、异步、自动物化视图等多种能力。


三、最佳实践:小红书湖仓一体实践,性能提升 6-7 倍

987a8d22497a69aded95ffbebf90f72e.jpeg

在小红书的数据平台架构中,Iceberg 作为数据湖的核心组件,负责存储海量数据。随着业务的发展和数据量的增长,Iceberg 数据湖的查询性能出现瓶颈。

StarRocks 3.0 的湖上分析能力帮助小红书在自助分析场景中,将查询引擎通过灰度迁移机制从 Presto 平滑迁移到 StarRocks,已迁移部分的平均查询性能提升 6-7 倍。同时,通过 StarRocks 自动化的数据同步流程,小红书能够对 Iceberg 数据进行直接分析,并确保 Iceberg 中的数据能够实时或定时同步到 StarRocks 中,来保持数据的一致性。

通过弹性伸缩等优化手段,小红书在保持查询性能的同时简化技术栈架构,降低了 IT 成本。特别是在低峰期通过归还 Spot 实例等方式,实现了成本的进一步节约。

更多与 Iceberg 集成的技术详情与用户实践点击此处了解。

写在最后

镜舟科技作为 StarRocks 的商业化公司,其湖仓分析引擎进一步解决了企业在实际应用中遇到的问题,镜舟湖仓分析引擎在开源产品 StarRocks 的基础上,增加诸多企业级产品特性,如更精细的数据权限控制、更便捷的可视化数据管理工具等,保障数据安全。

同时,镜舟湖仓分析引擎在易用性上提供更多支持,帮助企业轻松对接现有 IT 架构和业务系统,构建更加灵活数据分析平台,进一步提升企业的数据分析能力和用户体验。

4fcf00190a21471530ea5c3d3f08ddd3.jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1551714.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Python的异步编程

什么是协程? 协程不是计算机系统提供,程序员人为创造。 协程也可以被称为微线程,是一种用户态内的上下文切换技术。简而言之,其实就是通过一个线程实现代码块相互切换执行。 实现协程有那么几种方法: greenlet&…

Windows——解除Windows系统中文件名和目录路径的最大长度限制

第一步:打开本地组策略编辑器 按下Win R键打开运行窗口,输入 gpedit.msc 并回车,打开本地组策略编辑器。 第二步:开启 长路径设置 第三步:重启计算机

全新带货思路,用AI美女数字人做情感赛道,27天销量1559单

本期就另外分享一个全新的AI美女数字人带货思路,如果你正好对AI视频带货感兴趣,那么本期内容直接给你抹平“视频号上AI美女数字人玩法信息差”,最主要还是趁这类内容还不卷的时候,赶紧行动起来! 更多实操教程和数字人工…

Paper解读:工作场所人机协作的团队形成:促进组织变革的目标编程模型

人工智能(AI)具有降低运营成本、提高效率和改善客户体验的潜力。 因此,在组织中组建项目团队至关重要,这样他们就会在决策过程中欢迎人工智能。 当前的技术革命要求公司快速变革,并增加了对团队在促进创新采用方面的作…

Chromium 屏蔽“缺少 Google API 密钥,因此 Chromium 的部分功能将无法使用。”提示 c++

新编译的Chromium工程默认gn参数如下: 可以利用gn args --list out/debug >1.txt 导出默认参数 google_api_key Current value (from the default) "" From //google_apis/BUILD.gn:43 Set these to bake the specified API keys and OAuth client …

【IT001】基于springboot+vue实现的在线问卷调查网站系统

作者主页:Java码库 主营内容:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app等设计与开发。 收藏点赞不迷路 关注作者有好处 文末获取源码 项目描述 在当今信息爆炸的时代,数据收集与分析的重要…

经典文献阅读之--Stereo-NEC(全新双目VIO初始化)

0. 简介 双目VI-SLAM初始化方法分为两种类型:联合方法和分离方法。联合方法通过融合视觉观测和IMU积分来同时处理视觉和惯性参数,但有可能在闭合解中忽视陀螺仪偏置,而且计算成本高。分离方法首先独立解决SfM问题,然后根据纯视觉…

Qt --- 常用控件的介绍---Widget属性介绍

一、控件概述 编程,讲究的是站在巨人的肩膀上,而不是从头发明轮子。一个图形化界面上的内容,不需要咱们全都从零区实现,Qt中已经提供了很多内置的控件了(按钮,文本框,单选按钮,复选…

CMake教程(八):添加定制命令和生成的文件

本篇继续 CMake 官网教程的第八篇教程,所用材料是 Step8 目录下的源代码。 本篇教程主要讲解如何通过 CMake 生成一个头文件,该头文件当中包含了 1 到 10 的平方根表格,然后在程序的其它部分包含这个生成的头文件。 出于教学的目的&#xf…

手机实时提取SIM卡打电话的信令声音-新的篇章(二、USB音频线初步探索)

手机实时提取SIM卡打电话的信令声音-新的篇章(二、USB音频线初步探索) 前言 前面的篇章和方案中,我们从架构拓扑和原理的角度分析了使用音频线来绕开手机对SIM卡电话的通话声音的封锁场景的可行性,并尝试拆分和对比模拟3.5mm耳机的音频和USB的数字音频线在使用上的差异。 在…

【ADC】系统误差分析中的统计原理

概述 本文学习于TI 高精度实验室课程,讨论典型和最大数据表规格的统计含义,分析最坏情况分析和查看典型值的统计分析之间的差异。 文章目录 概述一、最坏情况下的误差大小及其概率二、估计误差更好的方法 一、最坏情况下的误差大小及其概率 为了更好地…

【电机-概述及分类】

文章目录 第1章1-1 电机的定义1-2 电机的构成要素1-3 电机的分类1-3-1 直流电机1-3-1-1 永磁励磁型直流电机1-3-1-2 电磁铁励磁型直流电机 第1章 重新认识电机的体系 电机包括许多种类。换个角度来看,并没有完美的电机,某种电机具有所谓A的优点&#xf…

Unreal 对象、属性同步流程

文章目录 类型同步初始化创建 FObjectReplicator创建 FRepLayout、Cmd、ShadowOffset创建 FRepChangedPropertyTracker、FRepState创建 FReplicationChangelistMgr、FRepChangelistState、ShadowBuffer 属性同步属性变化检测查找变化属性,写入ShadowMemory发送数据 …

php email功能实现:详细步骤与配置技巧?

php email发送功能详细教程?如何使用php email服务? 无论是用户注册、密码重置,还是订单确认,电子邮件都是与用户沟通的重要手段。AokSend将详细介绍如何实现php email功能,并提供一些配置技巧,帮助你更好…

读代码UNET

这个后面这个大小怎么算的,这参数怎么填,怎么来的? 这是怎么看怎么算的? 这些参数设置怎么设置?卷积多大,有什么讲究?

65.【C语言】联合体

目录 目录 1.定义 2.格式 3.例题 答案速查 分析 4.练习 答案速查 分析 5.相同成员的联合体和结构体的对比 6.联合体的大小计算 2条规则 答案速查 分析 练习 答案速查 分析 7.联合体的优点 8.匿名联合体 1.定义 和结构体有所不同,顾名思义:所有成员联合使用同…

软件设计师——计算机网络

📔个人主页📚:秋邱-CSDN博客☀️专属专栏✨:软考——软件设计师🏅往期回顾🏆:🌟其他专栏🌟:C语言_秋邱 一、OSI/ RM七层模型(⭐⭐⭐) ​ 层次 名称 主要功…

【STM32单片机_(HAL库)】4-1【定时器TIM】定时器中断点灯实验

1.硬件 STM32单片机最小系统LED灯模块 2.软件 timer驱动文件添加定时器HAL驱动层文件添加GPIO常用函数定时器中断配置流程main.c程序 #include "sys.h" #include "delay.h" #include "led.h" #include "timer.h"int main(void) {H…

latex打出邮箱图标和可点击的orcidID

如图所示: 邮箱的打法 \usepackage{bbding} \inst{(}\Envelope\inst{)}orcidID的打法 \newcommand{\myorcidID}[1]{\href{https://orcid.org/#1}{\includegraphics[width8pt]{res/orcid.png}}} \captionsetup[algorithm]{skip5pt} \definecolor{customblue}{RGB}{…

硬盘数据不翼而飞?2024四大神器帮您找回!

能看到这篇文章的,相信都是一不小心丢失了重要数据的小伙伴。不要慌,以下的这几个硬盘数据恢复软件大家都可以试试,它们大概率能帮助大家找回重要数据! 福昕数据恢复 直达链接(复制到浏览器打开)&#xf…