Spark SQL 查询引擎连接器

Hudi

师成师成· 更新于 2026-09-29· 阅读 4 分钟· 0 次阅读

登录后可跨设备保存划线和私人笔记登录

Apache Hudi(读作 "hoodie")是新一代流式数据湖平台。Apache Hudi 将核心的数据仓库和数据库功能直接带入数据湖。

:::tip 提示
本文假设你已掌握 Hudi 的基础知识与操作。对于本文未涉及的 Hudi 相关知识,可参阅其官方文档。
:::

通过 Kyuubi,我们可以直接对 Hudi 执行 SQL 查询,这比直接使用 Spark 操作 Hudi 更加方便、易懂,也更易于扩展。

Hudi 集成

要通过 Catalog API 启用 Kyuubi Spark SQL 引擎与 Hudi 的集成,你需要:

  • 引入 Hudi 的依赖
  • 设置 Spark 扩展和 Catalog 的配置

依赖

支持 Hudi 的 Kyuubi Spark SQL 引擎的 classpath 由以下部分组成:

  1. kyuubi-spark-sql-engine-1.9.1_2.12.jar,随 Kyuubi 发行版部署的引擎 jar
  2. Spark 发行版的一份副本
  3. hudi-spark<spark.version>-bundle_<scala.version>-<hudi.version>.jar(例如:hudi-spark3.2-bundle_2.12-0.11.1.jar),可在 Maven Central 中找到

为了让 Hudi 包对引擎的运行时 classpath 可见,我们可以采用以下任一方法:

  1. 将 Hudi 包直接放入 $SPARK_HOME/jars
  2. 设置 spark.jars=/path/to/hudi-spark-bundle

配置

要启用 Hudi 的功能,我们可以设置以下配置:

# Spark 3.2
spark.serializer=org.apache.spark.serializer.KryoSerializer
spark.sql.extensions=org.apache.spark.sql.hudi.HoodieSparkSessionExtension
spark.sql.catalog.spark_catalog=org.apache.spark.sql.hudi.catalog.HoodieCatalog

# Spark 3.1
spark.serializer=org.apache.spark.serializer.KryoSerializer
spark.sql.extensions=org.apache.spark.sql.hudi.HoodieSparkSessionExtension

Hudi 操作

以 Create Table 为例,

CREATE TABLE hudi_cow_nonpcf_tbl (
  uuid INT,
  name STRING,
  price DOUBLE
) USING HUDI;

以 Query Data 为例,

SELECT * FROM hudi_cow_nonpcf_tbl WHERE id < 20;

以 Insert Data 为例,

INSERT INTO hudi_cow_nonpcf_tbl SELECT 1, 'a1', 20;

以 Update Data 为例,

UPDATE hudi_cow_nonpcf_tbl SET name = 'foo', price = price * 2 WHERE id = 1;

以 Delete Data 为例,

DELETE FROM hudi_cow_nonpcf_tbl WHERE uuid = 1;

评论

登录后参与评论

正在加载评论…