最新动态
数据湖架构--Iceberg
2024-12-18 23:03

和Hudi类似,Iceberg也提供了数据湖的功能,根据官网的定义,它是一个为分析大数据集开源的表存储格式,可以SQL表一样用Spark、Preso进行查询。Iceberg框架很好的解耦了数据计算与数据存储,计算引擎支持Spark、Flink和Hive等。本文第一部分将用Spark进行数据操作,后续再补充Flink操作部分。

数据湖架构--Iceberg

功能特性

  1. 支持Schema变更:字段的增删改对数据表没有影响
  2. Hidden Partition:用户不用再去管理表的partition,在Hive中插入数据时是需要指定partition的,因为Hive并不会检查分区格式,所以用户要自己去校验分区格式是否正确,在Iceberg中,系统会自动处理数据并保存到正确的分区中。

Schema管理

Iceberg Schema可以通过Hivemetastore方式或者Hadoop文件方式进行管理,两种方式在处理metadata的文件名时采用不同的方式,如果想直接通过Hive指定外部表是不行的。这种处理方式有些奇怪,不知道是不是因为我还没有看到这个设计背后的原因。

  • hadoop文件,查看文件命名规则
  • hive metastore元数据管理,Iceberg表以外部表的形式存储在hive metastore中

表以及数据操作

下面会通过Spark操作Iceberg的表和数据相关的怎删改操作,为了能够识别Iceberg,首先要启动SparkSession并配置好Iceberg的参数,参数是metastore的位置,通过设置spark.sql.catalog.spark_catalog.type 来确定使用Hadoop文件还是Hive metastore,因为之后要使用Presto,这里用Hivemetastore来管理Iceberg的metadata

 

表历史

查看历史快照

 

创建表

Spark SQL创建表,并添加数据

 

添加字段

添加字段成功之后,通过hive-cli可以验证新添加的字段

 

删除字段

 

Presto 查询

在Presto Server中添加Iceberg配置,/usr/lib/presto/etc/catalog/iceberg.properties

 

回退以及历史查询

查看表的Snapshot历史信息,Iceberg支持时间旅行,即历史查询,SparkSQL目前不支持TimeTravel,需要用Spark API进行调用。

 

恢复到历史版本,需要同JavaAPI实现

 

小文件合并

Iceberg合并小文件时并不会删除被合并的文件,Compact是将小文件合并成大文件并创建新的Snapshot。如果要删除文件需要通过Expire Snapshots来实现

 

删除历史快照

历史快照是通过ExpireSnapshot来实现的,设置需要删除多久的历史快照

    以上就是本篇文章【数据湖架构--Iceberg】的全部内容了,欢迎阅览 ! 文章地址:http://www78564.xrbh.cn/quote/27057.html 
     动态      相关文章      文章      同类文章      热门文章      栏目首页      网站地图      返回首页 迅博思语移动站 http://www78564.xrbh.cn/mobile/ , 查看更多