当前位置:网站首页>数据湖(九):Iceberg特点详述和数据类型
数据湖(九):Iceberg特点详述和数据类型
2022-07-07 12:38:00 【51CTO】
Iceberg特点详述和数据类型
一、Iceberg特点详述
1、Iceberg分区与隐藏分区(Hidden Partition)
Iceberg支持分区来加快数据查询。在Iceberg中设置分区后,可以在写入数据时将相似的行分组,在查询时加快查询速度。Iceberg中可以按照年、月、日和小时粒度划分时间戳组织分区。
在Hive中也支持分区,但是要想使分区能加快查询速度,需要在写SQL时指定对应的分区条件过滤数据,在Iceberg中写SQL查询时不需要再SQL中特别指定分区过滤条件,Iceberg会自动分区,过滤掉不需要的数据。
在Iceberg中分区信息可以被隐藏起来,Iceberg的分区字段可以通过一个字段计算出来,在建表或者修改分区策略之后,新的数据会自动计算所属于的分区,在查询的时候同样不用关心表的分区是什么字段,只需要关注业务逻辑,Iceberg会自动过滤不需要的分区数据。
正是由于Iceberg的分区信息和表数据存储目录是独立的,使得Iceberg的表分区可以被修改,而且不会涉及到数据迁移。
2、Iceberg表演化(Table Evolution)
在Hive分区表中,如果把一个按照天分区的表改成按小时分区,那么没有办法在原有表上进行修改,需要创建一个按照小时分区的表,然后把数据加载到此表中。
Iceberg支持就地表演化,可以通过SQL的方式进行表级别模式演进,例如:更改表分区布局。Iceberg进行以上操作时,代价极低,不存在读出数据重新写入或者迁移数据这种费时费力的操作。
3、模式演化(Schema Evolution)
Iceberg支持以下几种Schema的演化:
- ADD:向表或者嵌套结构增加新列。
- Drop:从表或嵌套结构中移除列。
- Rename:重命名表中或者嵌套结构中的列。
- Update:将复杂结构(Struct、Map<Key,Value>,list)中的基本类型扩展类型长度,比如:tinyint修改成int。
- Reorder:改变列的顺序,也可以改变嵌套结构中字段的排序顺序。
注意:
Iceberg Schema的改变只是元数据的操作改变,不会涉及到重写数据文件。Map结构类型不支持Add和Drop字段。
Iceberg保证Schema演化是没有副作用的独立操作,不会涉及到重写数据文件,具体如下:
- 增加列时不会从另一个列中读取已存在的数据
- 删除列或者嵌套结构中的字段时,不会改变任何其他列的值。
- 更新列或者嵌套结构中字段时,不会改变任何其他列的值。
- 改变列或者嵌套结构中字段顺序的时候,不会改变相关联的值。
Iceberg实现以上的原因使用唯一的id来追踪表中的每一列,当添加一个列时,会分配新的ID,因此列对应的数据不会被错误使用。
4、分区演化(partition Evolution)
Iceberg分区可以在现有表中更新,因为Iceberg查询流程并不和分区信息直接关联。
当我们改变一个表的分区策略时, 对应修改分区之前的数据不会改变, 依然会采用老的分区策略, 新的数据会采用新的分区策略, 也就是说同一个表会有两种分区策略, 旧数据采用旧分区策略, 新数据采用新新分区策略, 在元数据里两个分区策略相互独立,不重合.
因此,在我们写SQL进行数据查询时, 如果存在跨分区策略的情况, 则会解析成两个不同执行计划, 如Iceberg官网提供图所示:


图中booking_table表2008年按月分区, 进入2009年后改为按天分区, 这两中分区策略共存于该表中。得益于Iceberg的隐藏分区(Hidden Partition), 针对上图中的SQL查询, 不需要在SQL中特别指定分区过滤条件(是按照月还是按照天), Iceberg会自动分区, 过滤掉不需要的数据。
5、列顺序演化(Sort Order Evolution)
Iceberg可以在一个已经存在的表上修改排序策略。修改了排序策略之后, 旧数据依旧采用老排序策略不变。往Iceberg里写数据的计算引擎总是会选择最新的排序策略, 但是当排序的代价极其高昂的时候, 就不进行排序了。
二、Iceberg数据类型
Iceberg表支持以下数据类型:
类型 | 描述 | 注意点 |
boolean | 布尔类型,true或者false | |
int | 32位有符号整形 | 可以转换成long类型 |
long | 64位有符号整形 | |
float | 单精度浮点型 | 可以转换成double类型 |
double | 双精度浮点型 | |
decimal(P,S) | decimal(P,S) | P代表精度,决定总位数,S代表规模,决定小数位数。P必须小于等于38。 |
date | 日期,不含时间和时区 | |
time | 时间,不含日期和时区 | 以微秒存储,1000微秒 = 1毫秒 |
timestamp | 不含时区的timestamp | 以微秒存储,1000微秒 = 1毫秒 |
timestamptz | 含时区的timestamp | 以微秒存储,1000微秒 = 1毫秒 |
string | 任意长度的字符串类型 | UTF-8编码 |
fixed(L) | 长度为L的固定长度字节数组 | |
binary | 任意长度的字节数组 | |
struct<...> | 任意数据类型组成的一个结构化字段 | |
list<E> | 任意数据类型组成的List | |
map<K,V> | 任意类型组成的K,V的Map |
边栏推荐
- The longest ascending subsequence model acwing 482 Chorus formation
- Cargo placement problem
- 交换机和路由器的异同
- MLGO:Google AI发布工业级编译器优化机器学习框架
- CSMA/CD 载波监听多点接入/碰撞检测协议
- 请问,我kafka 3个分区,flinksql 任务中 写了 join操作,,我怎么单独给join
- UML state diagram
- XML文件的解析操作
- c#利用 TCP 协议建立连接
- Leetcode——344. 反转字符串/541. 反转字符串 II/151. 颠倒字符串中的单词/剑指 Offer 58 - II. 左旋转字符串
猜你喜欢

Simple use of websocket

最长上升子序列模型 AcWing 1012. 友好城市

Vscode configuration uses pylint syntax checker

Mrs offline data analysis: process OBS data through Flink job
![GVIM [III] [u vimrc configuration]](/img/82/38355d7914e5fe490546347e57e35d.png)
GVIM [III] [u vimrc configuration]

Notes de l'imprimante substance: paramètres pour les affichages Multi - écrans et multi - Résolutions

2022年13个UX/UI/UE最佳创意灵感网站

The longest ascending subsequence model acwing 1014 Mountaineering

Codes de non - retour à zéro inversés, codes Manchester et codes Manchester différentiels couramment utilisés pour le codage des signaux numériques

The longest ascending subsequence model acwing 1012 Sister cities
随机推荐
Démontage de la fonction du système multi - Merchant Mall 01 - architecture du produit
[network security] SQL injection syntax summary
ARM Cortex-A9,MCIMX6U7CVM08AD 处理器应用
Transferring files between VMware and host
SAKT方法部分介绍
Reverse non return to zero code, Manchester code and differential Manchester code of common digital signal coding
ndk初学习(一)
Demis Hassabis谈AlphaFold未来目标
Oracle Linux 9.0 正式发布
Analysis of arouter
股票开户首选,炒股交易开户佣金最低网上开户安全吗
请问,PTS对数据库压测有好方案么?
低代码平台中的数据连接方式(下)
Excuse me, as shown in the figure, the python cloud function prompt uses the pymysql module. What's the matter?
Equipment failure prediction machine failure early warning mechanical equipment vibration monitoring machine failure early warning CNC vibration wireless monitoring equipment abnormal early warning
3D detection: fast visualization of 3D box and point cloud
Mmkv use and principle
LeetCode 648. 单词替换
First choice for stock account opening, lowest Commission for stock trading account opening, is online account opening safe
Oracle non automatic submission solution