paimon实战-- 基于hive-catalog搭建paimon计算与存储环境

简介

Apache Paimon 作为新一代 流批一体数据湖存储 ,在实时写入、近实时更新、主键表等场景下表现突出。相比 Iceberg / Hudi,Paimon 更偏向 Streaming-first 的设计,非常适合实时数仓与湖仓融合架构。

本文基于真实生产环境落地经验,详细拆解一套:

Hive Catalog 统一管理 Paimon 元数据

Flink / Spark / Hive 多引擎安全、稳定访问同一份 Paimon 数据湖

一、为什么选择 Hive Catalog 管理 Paimon 元数据?

Paimon 支持多种 Catalog:

  • filesystem catalog

  • hive catalog

  • rest catalog(新)

1️⃣ filesystem catalog 的局限

虽然 filesystem catalog 部署简单,但在生产中存在明显问题:

  • 元数据仅存于文件系统

  • 多引擎并发访问一致性差

  • 不支持 Hive / Spark SQL 原生发现表

  • 运维治理能力弱

不适合多引擎、多人协作的生产环境


2️⃣ Hive Catalog 的优势(生产首选)

使用 Hive Metastore 作为 Paimon 的 Catalog:

  • 统一元数据中心(表 / schema / 分区)

  • Flink / Spark / Hive 共享同一套表定义

  • 支持 Hive / Spark SQL 直接查 Paimon 表

  • 成熟稳定,运维体系完善

本质上:Hive Metastore 只管元数据,数据仍由 Paimon 管理

二、整体架构设计

1️⃣ 架构总览

复制代码
        +-------------+
        |  Hive SQL   |
        +------+------+
               |
        +------+------+        +------------------+
        | Hive Meta  | <----> |  Paimon Metadata |
        |  Store     |        +------------------+
        +------+------+                 |
               |                        |
     +---------+----------+             |
     |                    |             |       
+----+-----+        +-----+----+     +----------+----+
| Flink SQL|        | Spark SQL|     |   HDFS / S3   |
+----------+        +----------+     +---------------+
  • Hive Metastore:统一元数据服务

  • Paimon:负责数据文件、快照、索引

  • HDFS / OSS / S3:数据与表目录存储

  • Flink / Spark / Hive:多引擎访问


三、基础环境准备

1️⃣ 组件版本建议(生产验证)

组件 推荐版本
Paimon 0.7.x / 0.8.x
Flink 1.17 / 1.18
Spark 3.3+
Hive Metastore 2.3.x / 3.1.x
Hadoop 3.x

⚠️ 注意:Spark 访问 Paimon 不依赖 Hive 执行引擎,只使用 Metastore。


2️⃣ Hive Metastore 要求

  • 独立部署 HMS(推荐)

  • MySQL / PostgreSQL 作为元数据库

  • 所有引擎 网络可达 HMS


四、Paimon + Hive Catalog 部署配置

1️⃣ 创建 Warehouse 目录

复制代码
hdfs:///warehouse/paimon

该目录下每个 database 对应一个子目录。


(1)准备依赖

将以下 jar 放入 Flink lib:

  • paimon-flink-*.jar

  • hive-exec-*.jar

  • hive-metastore-*.jar


sql 复制代码
CREATE CATALOG paimon_hive WITH (
  'type' = 'paimon',
  'metastore' = 'hive',
  'uri' = 'thrift://hms:9083',
  'warehouse' = 'hdfs:///warehouse/paimon'
);
复制代码
USE CATALOG paimon_hive;

sql 复制代码
/* primary key */
CREATE TABLE my_table_pk (
      user_id BIGINT,
      item_id BIGINT,
      behavior STRING,
      dt STRING,
      hh STRING,
      PRIMARY KEY (dt, hh, user_id) NOT ENFORCED
);

📌 表定义会同步写入 Hive Metastore


五、Spark 访问 Hive Catalog 下的 Paimon 表

1️⃣ Spark 依赖准备

将以下 jar 放入 Spark classpath:

  • paimon-spark-3.3-*.jar

  • hive-metastore-*.jar


2️⃣ Spark SQL Catalog 配置

sql 复制代码
CREATE CATALOG paimon_hive
USING paimon
OPTIONS (
  'metastore' = 'hive',
  'uri' = 'thrift://hms:9083',
  'warehouse' = 'hdfs:///warehouse/paimon'
);
复制代码
USE paimon_hive;

3️⃣ Spark 查询 Paimon 表

sql 复制代码
SELECT dt, SUM(amount)
FROM dwd_order
GROUP BY dt;

📌 Spark 直接读取 Paimon 数据文件和快照。


六、Hive 访问 Paimon 表

Hive 不适合写入 Paimon,仅建议作为查询引擎。

1️⃣ Hive 依赖

  • paimon-hive-connector.jar

  • hive-exec-*.jar


2️⃣ Hive 外表映射

sql 复制代码
CREATE EXTERNAL TABLE dwd_order (
  order_id BIGINT,
  user_id BIGINT,
  amount DECIMAL(10,2)
)
PARTITIONED BY (dt STRING)
STORED BY 'org.apache.paimon.hive.PaimonStorageHandler'
LOCATION 'hdfs:///warehouse/paimon/default.db/dwd_order';

之后即可使用 Hive SQL 查询。

相关推荐
wasp5201 天前
Hudi Spark 集成分析
数据库·spark·hudi·数据湖
秦拿希2 天前
【paimon-trino】trino整合paimon元数据访问s3
大数据·trino·paimon
阿坤带你走近大数据8 天前
数据湖的构建实施方法论
大数据·数据湖·湖仓一体
StarRocks_labs24 天前
dbt+DataOps+StarRocks:构建一体化数据治理与智能分析平台实践
starrocks·数据湖·dataops·dbt·etl 框架
zhangkaixuan45624 天前
Paimon Action Jar 实现机制分析
java·大数据·flink·paimon·datalake
数据与后端架构提升之路25 天前
2025:把“大模型”写进“数据闭环”——从自动驾驶到具身机器人,我如何用数据与算法做可落地的智能系统
数据湖·mlops·vla·流批一体·世界模型·自动驾驶数据闭环·occupancy