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 查询。

相关推荐
StarRocks_labs20 小时前
基于 Fluss、Paimon 与 StarRocks 构建淘天集团湖流一体数据链路
starrocks·olap·schema·paimon·fluss·湖流一体
StarRocks_labs2 天前
StarRocks x Fluss x Paimon 湖流一体方案:构建秒级响应、湖流一体的实时数据引擎
starrocks·kafka·lambda·查询·paimon·fluss·湖流一体
StarRocks_labs3 天前
StarRocks 全模态能力导读:连接内容理解、混合检索与业务分析
starrocks·paimon·业务分析·多模态处理·混合检索·全模态能力·内容处理
迈巴赫车主1 个月前
湖仓一体(Data Lakehouse)简介
大数据·数据仓库·数据湖·湖仓一体
不吃天鹅肉3 个月前
数据湖Delta Lake 初试
大数据·数据湖
阿坤带你走近大数据3 个月前
Paimon相关概念的介绍
flink·数据湖·paimon