本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。
本文为您介绍数据湖构建中 Paimon 数据表的基本操作。
表类型介绍
特性 | 采用湖格式Paimon表,支持实时与离线一体化存储,可通过计算引擎和开源API实现高效的表读写访问。 |
适用场景 | 流式处理、实时更新及高性能OLAP查询等场景。 |
数据管理 | 数据由DLF完全管理,包括元数据和实际数据文件。删除表时,元数据和数据会被一起删除。 |
存储系统 | 数据存储路径由DLF基于UUID自动生成,用户无需手动指定存储路径。 |
删除行为 | 删除表时,默认保留数据1天以降低误删风险,超过1天后数据会被彻底删除。 |
全托管Paimon表提供如下特性:
全托管Compaction,与数据写入完全分离,运行更稳定。
支持多个写入作业同时写入同一张表的同一个分区。
提供分区级实时指标,行数、文件个数、大小等。
提供多版本机制,支持时间旅行,细粒度的增删改操作。
新建数据表
登录数据湖构建控制台。
在Catalog列表页面,单击Catalog名称,进入Catalog详情页。
在数据库列表中,单击数据库名称,进入表列表页。
在表列表中,单击新建数据表。
配置以下信息,单击确定。
配置项
说明
表格式
选择 Paimon 表。
表数据库名称
必填,数据库下不可重名。
数据表描述
可选,输入描述信息。
列
定义表中的列信息,包括列名称、是否为主键、是否非空、是否为分区字段、数据类型、长度/类型、描述及操作。
表自定义属性
可以添加自定义属性,在创建过程中会覆盖 DLF 元数据服务对应的默认参数,适用的配置项详见Paimon 官方文档。
说明在DLF中创建的Paimon表默认采用“write-only”模式,这意味着后台的表优化操作(如Compaction、快照清理、分区清理等)将由DLF后台自动完成。
SQL示例
DLF创建的Paimon表支持主键表和Append表。如果已经在其他平台上(如EMR、Flink等)关联了Catalog,也可在这些平台上创建数据库和表,元数据将会直接写入DLF中。详情请参见引擎对接。
主键表
以主键作为唯一标识的表类型,专门服务于流式数据处理场景。它使得用户能够对表中的记录进行实时更新、插入与删除操作,并自动生成精确的变更日志,方便下游系统进行流式消费。此外,主键表还支持基于主键条件的高效数据查询。
Flink SQL示例
CREATE TABLE orders ( order_id BIGINT, price BIGINT, customer STRING, PRIMARY KEY NOT ENFORCED(order_id) );
Spark SQL示例
CREATE TABLE orders ( order_id BIGINT, price BIGINT, customer STRING ) TBLPROPERTIES ( 'primary-key' = 'order_id' );
DLF产品默认采用Postpone Bucket模式,这是一种自适应的桶分配策略。该模式能够根据分区的数据量动态调整桶的数量,从而避免因桶配置过多导致读取性能下降,或因桶配置过少影响写入性能。通过这种智能化的机制,您无需担心桶的配置问题。当然,如果您有特殊需求,也可以主动设置桶数(如 'bucket' = '5')以覆盖默认配置。
其它业务相关的配置,您可以定义:
合并引擎(merge-engine)来进行较为复杂的计算。
删除向量(deletion-vectors.enabled)来大幅提升查询性能。
变更日志(changelog-producer)为 'lookup' 来生成变更日志以提供给下游流读。
序列字段(sequence.field)来面对有乱序的场景,以获得正确更新顺序。
如果上游是CDC数据,推荐使用Flink CDC或者数据集成产品来完成数据更新入湖,获得整库同步、自动建表、表结构同步等能力。
如果希望主键表在OLAP引擎中实现高性能查询,我们高度推荐开启“删除向量”模式,虽然会消耗多一些Compaction的资源,带来的是更稳定和更高性能的OLAP查询。
Append表
如果一个表未定义主键,则它被称为Append表。与主键表不同,Append表不支持直接的流式更新,但它的批处理性能要出众得多。
支持流式写入和流式读取,DLF后台会自动进行小文件合并,从而以较低的计算成本提升数据的时效性。
支持细粒度的数据操作,如
DELETE
、UPDATE
和MERGE INTO
,并提供版本管理和时间旅行功能,满足多样化的业务需求。支持通过排序加速查询,也支持定义Bitmap来进行加速查询,OLAP引擎有很好的直读性能。
推荐在绝大多数批处理场景中,或无主键的流处理场景下使用Append表。相比主键表,Append表更简单易用,同时能够满足高效数据写入和查询的需求。
Flink SQL示例
CREATE TABLE orders ( order_id BIGINT, price BIGINT, customer STRING );
Spark SQL示例
CREATE TABLE orders ( order_id BIGINT, price BIGINT, customer STRING );
查看数据表
删除数据表
表被删除后,系统默认将表内数据保留1天,以降低误删除风险。超过1天后,数据将被彻底删除。
在数据库列表中,单击数据库名称,可查看表列表。
在表列表中,单击操作列的删除。
在弹出的提示框中,单击确定,完成数据表删除。