面向Data+AI时代的数据湖创新与优化(附Iceberg案例)

news2024/9/24 23:26:29

面向Data+AI时代的数据湖创新与优化(附Iceberg案例)

  • 前言
  • 面向Data+AI时代的数据湖创新与优化

前言

在当今数字化时代,数据和人工智能(AI)的融合已成为推动企业发展和创新的关键力量。数据湖作为一种重要的数据存储和处理架构,在这个背景下扮演着至关重要的角色。然而,随着 AI 技术的迅速发展和应用场景的不断拓展,数据湖也面临着诸多挑战。

为了更好地应对这些挑战,实现数据和 AI 的深度融合,我们需要对数据湖进行优化和创新。Apache Iceberg 作为一种先进的数据湖技术,为我们提供了一个强大的基础。通过对 Iceberg 的深入研究和应用,我们可以更好地管理和处理数据,提高数据的质量和可用性,为 AI 模型的训练和推理提供有力支持。

同时,在 AI 时代,数据的多样性和复杂性不断增加,包括多媒体数据、向量数据、图数据等。如何有效地存储和处理这些数据,使其能够在数据湖中得到充分的利用,是我们需要解决的重要问题。此外,数据湖与 AI 的融合还需要考虑到性能、可扩展性、安全性等诸多因素,以确保系统的稳定和可靠运行。

在接下来的文章中,我们将深入探讨面向 Data + AI 时代的数据湖优化与实践,以腾讯的经验为例,介绍他们在 Apache Iceberg 基础上的创新举措和应用成果。希望这些内容能够为读者提供有益的参考和启示,推动数据湖技术在 AI 时代的不断发展和完善。

面向Data+AI时代的数据湖创新与优化

随着数据量的不断增长和AI技术的广泛应用,数据湖作为一种重要的数据存储和处理架构,正面临着新的挑战和机遇。本文将深入探讨面向Data+AI时代的数据湖优化与实践,以腾讯为例,介绍其在Apache Iceberg基础上的创新举措和应用场景。

在这里插入图片描述

数据湖的发展经历了从第一代到第二代的演变,如今正迈向与AI紧密结合的第三代。第一代数据湖以Hadoop、Hive为核心,主要用于离线T+1的大数据存储和查询,但存在分区级重写、集中式元数据管理和存储局限性等问题。第二代数据湖以Iceberg、Hudi、Delta Lake、Paimon等为代表,强调实时或近实时更新能力,支持行级事务更新、分散式元数据管理和云存储,为数据处理带来了更高的灵活性和效率。

随着大模型AI技术的兴起,第三代数据湖应运而生。除了传统的关系型数据,第三代数据湖还将存储多媒体数据、向量数据、图数据等与AI相关的数据。在数据湖上,不仅可以进行实时入湖、基于Spark的查询和ETL作业等data相关的负载,还可以实现数据科学、模型推理训练和向量查询等AI功能。这使得在一套数据平台上,既能支持AI,又能支持data负载,极大地减少了算法开发人员的负担,使整个流程更加顺畅。

在这里插入图片描述

然而,在AI时代,数据湖面临着一些挑战。首先,AI数据管理困难,数据散布在不同的文件格式中,需要ETL串联,时效性差;数据修改和模式变更困难,数据版本难以管理,尤其是跨系统的一致性难以保证。其次,AI数据读写性能较差,不同文件格式的重复序列化/反序列化和不同存储介质的重复I/O导致效率低下。

在这里插入图片描述

为了解决这些问题,一些数据湖的创业公司和学术界开始进行前沿探索。例如,LanceDB率先提出了向量数据湖的概念,可存储向量数据和多媒体数据;DeepLake具有好用的可视化界面和版本管理功能;LakeSoul提供了原生的Python接口,方便与模型训练挂钩。学术界也对AI数据管理高度重视,阿里云、微软亚研院和苹果等大公司在相关技术方面进行了探索,如向量数据库的崛起和Batch向量查询优化等。

在这里插入图片描述

Apache Iceberg是一款具有重要影响力的数据湖技术,其基础结构包括Catalog层、Metadata层和Data层。Catalog层存储table与metadata location的映射关系,并提供原子更新能力;Metadata层由metadata file、manifest list和manifest file组成,用于存储表的历史快照信息和过滤数据文件;Data层存储表的底层数据和可选的Delete File。

在这里插入图片描述

Iceberg支持数据更新,采用Copy-on-Write和Merge-on-Read两种方式。Copy-on-Write是读优化操作,通过重写数据文件来更新数据;Merge-on-Read是写优化操作,通过记录删除信息在读取时进行合并。由于Data files默认采取parquet列存且immutable,这影响了索引的设计。

在这里插入图片描述

Iceberg具有很强的开放性,支持多引擎和多语言。其Table Spec采用标准规范化格式,社区实现了多套引擎包,如Spark、Flink等,还支持Python、Java、Rust等多语言API。特别是Iceberg提供的Python接口,为结合AI工作流提供了很大帮助,解决了传统Spark引擎中PySpark模式存在的序列化开销和调试困难等问题。

在这里插入图片描述

腾讯基于PyIceberg进行了AI训练和推理链路的实践。PyIceberg API使用简便,通过加载catalog、进行planning和执行等步骤,可将数据转换为所需格式,如pandas、arrow、ray等,还研发了一些API,如将Iceberg转成PyTorch或TensorFlow dataset,以及开发PyIceberg SQL子系统,实现SQL解析和自动Plan优化,提高了算法调试的效率和便捷性。

在这里插入图片描述

在AI训练的Data Loader实现方面,社区版默认的bulk load形式在处理大规模数据时容易发生OOM,且GPU资源浪费严重。腾讯开发的支持AI大数据集的DataLoader,采用streaming方式分段加载,对外暴露为iterator形式,针对训练和推理场景进行了优化,如利用Alluxio缓存热数据和进行shuffle操作,提高了数据加载速度和GPU利用率,缩短了数据链路准备时间,改善了开发体验。

在这里插入图片描述

在向量查询方面,向量是AI技术中非常重要的概念,将NLP和图像等非结构化数据转化为结构化数组后,可通过数据库方法进行处理。常见的向量查询包括Search和SimJoin,暴力搜索的复杂度较高。为解决此问题,向量数据库采用近似索引技术,如基于聚类的索引和基于图的索引,但这些索引与数据湖的设计思想存在冲突,如难以支持实时入湖、与serverless概念不匹配等。

在这里插入图片描述

腾讯采用基于哈希函数的向量索引技术LSH(Locality Sensitive Hashing),其设计目标与普通哈希函数相反,最大化碰撞,使相似向量映射到同一个哈希桶,提高搜索效率。腾讯引入Iceberg向量表的优化,通过自定义数据类型tensor指定向量维度和哈希函数,设定bucket数量并使用Iceberg作为存储,在数据插入时构建LSH索引,实现了增量索引构建、支持实时更新和近似SimJoin,降低了查询复杂度。

在这里插入图片描述

在Iceberg向量表实现过程中,腾讯遇到了一些问题,如真实环境下AI数据集存在稀疏向量和数据倾斜。为解决这些问题,腾讯实现了兼容稀疏/稠密向量的自适应列存格式,并提供了相应的算子;采用动态拆分倾斜bucket的技术,结合Spark AQE和bucket join,缓解了负载不均衡的问题,提高了SimJoin查询性能,与Spark ML相比具有2 - 3倍的性能提升,同时保证了查询结果的正确性。

面向Data+AI时代的数据湖优化与实践是一个不断创新和发展的过程。腾讯在Apache Iceberg基础上的探索和实践,为解决AI时代数据湖面临的挑战提供了有益的借鉴,推动了数据湖技术的发展和应用,为企业实现数据驱动的决策和创新提供了有力支持。在未来,随着技术的不断进步,数据湖将在Data+AI时代发挥更加重要的作用,为企业带来更多的价值和机遇。

参考:https://mp.weixin.qq.com/s/HwnGaPWscY0BvAek-4bHpQ
如有内容涉及违规侵权,请联系圈主处理,感谢

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

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

相关文章

遵循ISA-88和ISA-95标准带来的好处是什么?

遵循ISA-88和ISA-95标准带来的好处是什么? 遵循ISA-88和ISA-95标准可以为企业带来多方面的好处,这些好处主要体现在提升生产效率、优化资源管理、增强质量控制以及促进系统集成等方面。以下是详细的分析: 遵循ISA-88标准的好处 1、…

TypeScript练习网站推荐

TypeScript练习网站推荐 网站地址:typescript-exercises typescript-exercises 是一个学习 TypeScript 的交互式平台,提供了一些 TypeScript 练习题,帮助开发者通过动手实践提高对 TypeScript 的理解和掌握。该网站非常适合想要从基础到高级…

Linux系统编程 --- 【2、3】文件IO与标准IO

一、文件IO 1.1 文件描述符 1.1.1 学习前的疑问? 1. 什么是文件描述符? 2. 文件描述符的作用是什么? 3. 文件描述符是怎样进行使用的? 1.1.2 文件描述符是什么以及作用是什么? 文件描述符(File Desc…

深圳市专精特新预计9月初申报!申报成功后,有哪些好处?

广东省专精特新中小企业已开放申报,9月30日申报截止!深圳市专精特新中小企业预计9月初开放(请以官方通知为准,推荐使用深科信项目申报通知订阅功能~) 我们整理专精特新中小企业认定有哪些好处?认定流程如何…

视频监控管理平台LntonAIServer视频智能分析噪声检测应用场景

在视频监控系统中,噪声问题常常影响到视频画面的清晰度和可用性。噪声可能由多种因素引起,包括但不限于低光环境、摄像机传感器灵敏度过高、编码压缩失真等。LntonAIServer通过引入噪声检测功能,旨在帮助用户及时发现并解决视频流中的噪声问题…

推荐一个小巧的截屏软件,无需安装,双击使用,功能强大

今天分享一款强大、小巧的截屏软件——ScreenCapture,一共不到4M。 ScreenCapture无需安装,在使用的时候双击执行即可,有时候存放在U盘中,直接双击启动截屏即可。 同时在截屏的时候,会显示截屏区域的大小。 支持跨屏幕…

【神经网络系列(中级)】小数据学习中的“特征提取+推理”模型【通俗理解】

【通俗理解】小数据学习中的“特征提取推理”模型 关键词提炼 #小数据学习 #特征提取 #推理模型 #机器学习 #数据效率 第一节:小数据学习与“特征提取推理”模型概述 1.1 小数据学习的挑战 在小数据场景下,模型训练面临数据稀缺的挑战,难…

C,C++ 宏定义## 的使用

宏定义## 的使用 C语言中宏定义## 的使用 宏定义## 的使用 #define LV_color(x,y,z) x##y##z 文章目录 宏定义## 的使用宏定义## 的使用 宏定义## 的使用 #include<stdio.h> #include<stdlib.h>#define LV_color(x,y,z) x##y##z int main() {printf("LV_col…

.net core接口项目中的国产神器SqlSugar

SQLSugar 是一款基于 .NET Core 平台的 ORM&#xff08;对象关系映射&#xff09;框架&#xff0c;其轻量级、易用性和强大的功能&#xff0c;使其在 .NET 社区中备受欢迎。结合其在接口项目中的应用&#xff0c;以下几点可以证明 SQLSugar 的学习和使用具有必要性和技术上的先…

70%的人都答错了的面试题,vue3的ref是如何实现响应式的?

本文将通过debug的方式带你搞清楚当ref接收的是对象和原始类型时&#xff0c;分别是如何实现响应式的。注&#xff1a;本文中使用的vue版本为3.4.19。 看个demo 还是老套路&#xff0c;我们来搞个demo&#xff0c;index.vue文件代码如下&#xff1a; <template><div&g…

顶升搬运小车与激光叉车在卡板物流及仓储效率提升中的应用

一、项目概述 本项目旨在实现卡板的自动化运输与仓储管理&#xff0c;通过引入顶升搬运小车&#xff08;AGV&#xff09;与激光叉车两种自动化设备&#xff0c;提高运输效率&#xff0c;减少人工干预&#xff0c;并确保流程的顺畅与安全。 二、产品特性与需求分析 考虑到产品…

fastadmin 清除插件缓存报错

Argument 1 passed to Symfony\Component\VarExporter\VarExporter::export() must be an instance of Symfony\Component\VarExporter\mixed, array given, called in F:\work\awebsite\oeob\vendor\karsonzhang\fastadmin-addons\src\addons\Service.php on line 404 我用的…

在DevEco Studio中安装通义灵码

下载插件离线包 离线压缩包 打开设置 打开插件 安装 5.安装后找到右侧图标&#xff0c;登录阿里账号。

Qt TabWidget添加多个窗口,实现分页窗体布局

Qt TabWidget添加多个窗口窗体&#xff0c;可关闭与打开 点击按钮可判断是否打开&#xff0c;避免重复打开 使用Qt中的TabWidget组件创建一个简单的分页窗体布局。点击按钮时&#xff0c;会新增一个窗体并添加到TabWidget中。每个子窗体能动态获取父窗体指针以进行操作 分别…

SpringBoot2:请求处理原理分析-接口参数解析原理

一、知识回顾 我们知道&#xff0c;接口的参数&#xff0c;一般都要配上注解来一起使用。 不同的参数注解&#xff0c;决定了传参的方式不同。 为什么会这样&#xff1f; 如果让你设计接口参数解析&#xff0c;你会怎么做&#xff1f; 本篇就来探究springboot底层是如何通过参…

又发现一个国内超好用的 AI 开放平台!

首先&#xff0c;我认为一个好的人工智能开放平台应该具备以下关键特性&#xff1a;提供多种AI模型和工具&#xff0c;涵盖自然语言处理、计算机视觉、语音识别、数据分析等多个领域。 满足不同应用领域的需求&#xff1b;需具备强大的计算资源&#xff0c;以支持大规模模型的…

K线图新玩法:利用Pin Bar精准捕捉市场反转

对于交易者来说&#xff0c;K线图是必备工具之一&#xff0c;所谓K线图就是由一系列的蜡烛形状组成&#xff0c;每个蜡烛代表一定时间周期内的价格变动情况。而有一种交易策略就是依据蜡烛形态预测市场趋势情况&#xff0c;这种交易策略被叫做Pin Bar交易法。 Pin Bar是什么&am…

高效智能 | 客户运营与知识库管理系统的融合策略

在当今快速变化的商业环境中&#xff0c;企业不仅要关注产品的创新和市场的拓展&#xff0c;更需要深耕客户运营&#xff0c;以提升客户满意度和忠诚度。而知识库管理系统作为支撑客户运营的重要工具&#xff0c;其与企业客户运营策略的深度融合&#xff0c;正成为企业提升核心…

畅捷通如何远程访问

畅捷通如何远程访问 越来越多的企业选择了畅捷通ERP来提升管理效率与资源整合能力。然而&#xff0c;随之而来的远程访问问题却成为了不少用户的困扰。作为一名畅捷通ERP的使用者&#xff0c;我深刻体会到&#xff0c;如何高效、便捷地进行远程访问是实现企业数字化管理的关键。…

软件测试之UI自动化测试

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 1、about自动化测试 定义&#xff1a;把人为驱动的测试转化为机器执行的一种过程&#xff0c;重点在于持续集成这个概念&#xff1b; 优势&#xff1a;节约人力和…