由于目前的工作暂时用不到paimon,也没有多余的服务器,同时使用paimon这块非常的简单,因此暂时不详解了,大家看看官方或者下面的介绍就会直接使用。
Apahce Paimon创新性地结合了 Lake 格式和 LSM 结构,为 Lake 架构带来了高效的更新。要将 Fluss 与 Paimon 集成,您必须启用 Lakehouse 存储并将 Paimon 配置为 Lakehouse 存储。
创建
当 Fluss 中创建或修改带有选项的表时'table.datalake.enabled' = 'true'
,Fluss 也会创建一个具有相同表路径的相应 Paimon 表。Paimon 表的架构与 Fluss 表的架构相同,只是多出两列__offset
并附__timestamp
加到最后。这两列用于帮助 Fluss 客户端以流式方式(如按偏移量/时间戳查找等)使用 Paimon 中的数据。
然后,数据湖分层服务会持续将 Fluss 中的数据压缩到 Paimon。对于主键表,它还将生成 Paimon 格式的更改日志,以便您以 Paimon 方式流式使用它。
读取
对于带有选项 的表'table.datalake.enabled' = 'true'
,有两部分数据:保留在 Fluss 中的数据和已在 Paimon 中的数据。现在,您有两个表视图:一个视图是具有分钟级延迟的 Paimon 数据,一个视图是全数据合并 Fluss 和 Paimon 数据,这是最新的秒级延迟内的数据。
Flink 让您可以决定选择哪种视图:
只有 Paimon 的分析性能更好,但数据新鲜度更差
结合 Fluss 和 Paimon 意味着更好的数据新鲜度,但分析性能会下降aimon
为了指向 Paimon 中的读取数据,必须指定带有后缀的表$lake
,以下 SQL 显示了如何执行此操作:
-- assume we have a table named `orders` -- read from paimon SELECT COUNT(*) FROM orders$lake; -- we can also query the system tables SELECT * FROM orders$lake$snapshots;
当在查询中指定带后缀的表时$lake
,它就像一个普通的 Paimon 表一样,因此它继承了 Paimon 表的所有功能。您可以在 Paimon 上享受 Flink 查询支持/优化的所有功能,例如查询系统表、时间旅行等。
为了读取 Fluss 和 Paimon 联合的完整数据,您只需将其作为普通表进行查询,无需任何后缀或其他内容,以下 SQL 显示了如何执行此操作:
-- query will union data of Fluss and Paimon SELECT SUM(order_count) as total_orders FROM ads_nation_purchase_power;
该查询可能看起来比仅在 Paimon 中查询数据要慢,但它查询的是完整数据,这意味着数据更新鲜。您可以多次运行该查询,由于数据是连续写入表中的,因此每次运行都应该得到不同的结果。
StarRocks读取paimon示例
由于 Fluss 压缩后的 Paimon 中的数据也是标准的 Paimon 表,因此可以使用 任何支持 Paimon 的引擎来读取数据,这里我们以StarRocks作为读取数据的引擎:
首先,为 StarRocks 创建 Paimon 目录:
CREATE EXTERNAL CATALOG paimon_catalog PROPERTIES ( "type" = "paimon", "paimon.catalog.type" = "filesystem", "paimon.catalog.warehouse" = "/tmp/paimon_data_warehouse" );
注意:配置值应该paimon.catalog.type
与paimon.catalog.warehouse
您在 Fluss 中将 Paimon 配置为湖屋存储的方式相同server.yaml
。
然后,你就可以orders
通过StarRocks来查询该表了:
-- the table is in database `fluss` SELECT COUNT(*) FROM paimon_catalog.fluss.orders; -- query the system tables, to know the snapshots of the table SELECT * FROM paimon_catalog.fluss.enriched_orders$snapshots;
数据类型
Fluss 与 Paimon 集成时,会自动在 Fluss 数据类型与 Paimon 数据类型之间进行转换,以下内容展示了Fluss 数据类型与 Paimon 数据类型之间的映射关系:
Fluss Data Type | Paimon Data Type |
---|---|
BOOLEAN | BOOLEAN |
TINYINT | TINYINT |
SMALLINT | SMALLINT |
INT | INT |
BIGINT | BIGINT |
FLOAT | FLOAT |
DOUBLE | DOUBLE |
DECIMAL | DECIMAL |
STRING | STRING |
CHAR | CHAR |
DATE | DATE |
TIME | TIME |
TIMESTAMP | TIMESTAMP |
TIMESTAMP WITH LOCAL TIMEZONE | TIMESTAMP WITH LOCAL TIMEZONE |
还没有评论,来说两句吧...