Paimon Table

重要

本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。

本文为您介绍数据湖构建中 Paimon 数据表的基本操作。

表类型介绍

特性

采用湖格式Paimon表,支持实时与离线一体化存储,可通过计算引擎和开源API实现高效的表读写访问。

适用场景

流式处理、实时更新及高性能OLAP查询等场景。

数据管理

数据由DLF完全管理,包括元数据和实际数据文件。删除表时,元数据和数据会被一起删除。

存储系统

数据存储路径由DLF基于UUID自动生成,用户无需手动指定存储路径。

删除行为

删除表时,默认保留数据1天以降低误删风险,超过1天后数据会被彻底删除。

全托管Paimon表提供如下特性

  • 全托管Compaction,与数据写入完全分离,运行更稳定。

  • 支持多个写入作业同时写入同一张表的同一个分区。

  • 提供分区级实时指标,行数、文件个数、大小等。

  • 提供多版本机制,支持时间旅行,细粒度的增删改操作。

新建数据表

  1. 登录数据湖构建控制台

  2. Catalog列表页面,单击Catalog名称,进入Catalog详情页。

  3. 数据库列表中,单击数据库名称,进入表列表页。

  4. 表列表中,单击新建数据表

  5. 配置以下信息,单击确定

    配置项

    说明

    表格式

    选择 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表不支持直接的流式更新,但它的批处理性能要出众得多

  1. 支持流式写入和流式读取,DLF后台会自动进行小文件合并,从而以较低的计算成本提升数据的时效性。

  2. 支持细粒度的数据操作,如 DELETEUPDATE 和 MERGE INTO,并提供版本管理和时间旅行功能,满足多样化的业务需求。

  3. 支持通过排序加速查询,也支持定义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. 数据库列表中,单击数据库名称,可查看表列表。

  2. 表列表中,单击表名称,可查看表字段。

  3. 单击表详情页签,可查看数据表基本信息、字段列表及分区列表。

    说明

    表详情页签,您可以手动修改分区表和非分区表的存储类型。详情请参见手动修改存储类型

  4. 单击权限页签,可为用户或角色授予数据表相关权限。详情请参见授权管理

删除数据表

警告

被删除后,系统默认将表内数据保留1天,以降低误删除风险。超过1天后,数据将被彻底删除。

  1. 数据库列表中,单击数据库名称,可查看表列表。

  2. 表列表中,单击操作列的删除

  3. 在弹出的提示框中,单击确定,完成数据表删除。