CRUD操作的底层实现

了解了Iceberg表的不同组件以及访问Iceberg表中的数据的任何引擎或工具所采取的路径之后,接下来更深入地了解在Iceberg表上执行CRUD操作时,底层会发生什么。

1)CREATE TABLE

首先,在Iceberg Catalog的db1数据库(Iceberg中称为namespace)中创建一个分区表。代码如下:

CREATE TABLE db1.table1 (
    order_id BIGINT,
    customer_id BIGINT,
    order_amount DECIMAL(10, 2),
    order_ts TIMESTAMP
)
USING iceberg
PARTITIONED BY ( HOUR(order_ts) );

上面在数据库db1中创建了一个名为table1的表。该表有4列,并按order_ts时间戳列的小时粒度进行分区。

当执行上面的查询时,在元数据层中创建一个带有快照s0的元数据文件(快照s0没有指向任何清单列表,因为表中还没有数据)。然后,db1. table1的当前元数据指针的catalog条目被更新为指向这个新元数据文件的路径。在这个语句被执行之后,环境看起来如图11-32所示。

2)INSERT

现在,向表table1中添加一些数据,代码如下:

......

抱歉,只有登录会员才可浏览!会员登录


《Spark原理深入与编程实战》