赞
踩
针对数据湖的功能,大致都一样,比如ACID,时间旅行,流批一体等等,基础的功能和对比网上很多,但都能支持通用功能,唯一不一样的是,hudi支持数据库特性,具体我们就不在这里叙述了。
在生产环境如何选择:我们对系统一般分为,自研系统,公司内部使用,客户使用等不同场景。
先介绍一下各个产品的定位:
Apache Iceberg 是一种用于大型分析数据集的开放表格格式。Iceberg 使用类似于 SQL 表的高性能表格式将表添加到计算引擎中,包括 Spark、Trino、PrestoDB、Flink、Hive 和 Impala。
Apache Hudi是下一代流数据湖平台。 Apache Hudi 将核心仓库和数据库功能直接引入数据湖。Hudi 提供表、事务、高效的更新插入/删除、高级索引、流式摄取服务、数据聚类/压缩优化、 和并发性,同时将数据保留为开源文件格式。
Delta Lake 是一个开源项目,可以在数据湖之上构建 Lakehouse 架构。Delta Lake 提供 ACID 事务、可扩展的元数据处理,并在现有数据湖(如 S3、ADLS、GCS 和 HDFS)之上统一流式和批处理数据处理。
iceberg 定位是 是表格的开发格式,什么引擎只要对接,都能识别这种格式。
hudi 定位是数仓+数据库的功能实现
delta 是构建湖仓一体和批流一体的提出者。
从者三个定位,我们都很清楚了,iceberg 是做标准,做一个通用的标准。hudi 是在数据湖上玩数据库,可能后面就是一个支持数据湖的数据库。 data在做集成,能支持数据湖,也能支持数据仓库,即能实现批处理,也能实现流处理。
三个产品怎么选择呢?
第一种:
如果你是互联网公司,系统只有自己使用,并且有一定能力对开源进行修改,成为社区的committee,可以根据公司的业务场景进行改造。那个产品都适合自己。
第二种:
如果你是给客户做产品,这个时候要考虑比较多,1.考虑稳定,2.考虑标准,3.考虑长久。
那这个产品属于iceberg莫属,其他产品有可能在时代的迭代中,会走偏了,最后被淘汰了,但是标准不会,不管后面怎么走,你一定要支持标准。iceberg不绑定任何组件,spark,flink 都没关系,如果你想更改表,可以用java 或者jdbc 都可以支持,你可以用java 开发管理表结构,动态创建表,修改表字段,hudi 不行,只能spark或者flink,修改完了,版本不一样,可能还支持。
第三种:
如果你是做实时数仓,对数据的更新性能要求特别高,只是想在数据库上体验实时数仓,这个时候可以用hudi ,hudi在更新上类似数据库,增加了索引和表主键ID的定义实现,如果有索引就比较快进行update操作。你就当是一个数据库,但是有一点不好,hudi底座不是通用的,组件想实现hudi交互,就需要从底层改源码,一步步实现。并且版本也要考虑,所以在版本集成的时候,spark的版本,flink版本都比较讲究,要稳定,需要你有测试能力。
第四种:
如果你公司是做AI的,湖仓一体的,对实时要求也不是很高,有就可以,主要以AI,离线,分析为主。可以考虑delta,delta 除了spark,同时也支持sql和python,可以用python的数学函数和AI框架进行对delta进行操作,写入的数据,建一张表,在对象存储(HDFS/S3)中就是一个文件夹,如果你是ELT人员,你可以往文件夹写数据,或者清洗数据,清洗完,把文件夹分享给AI团队,可以用python直接操作文件夹,进行操作。可以很方便进行各个团队之间的合作。
总结:
通过以上对比分析,根据不同的场景,选择不同的数据湖产品,最主要是长久和稳定,同样目前面临的问题就是,没有标准,没有标准对用户的选择比较艰难,delta 在3.0推出了标准支持,支持iceberg格式。将iceberg作为数据表格的标准,这样不管谁建的表,都是互通的。不管怎么样,iceberg可能不会淘汰的,剩下两个就看发展了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。