全部产品
Search
文档中心

开源大数据平台E-MapReduce:管理数据目录

更新时间:Sep 02, 2026

数据目录用于将DLF、Hive Metastore(HMS)、StarRocks或Hologres等外部元数据服务注册到EMR Serverless Spark工作空间。注册完成后,您可以在控制台查看其中的数据库、表和字段,并在SQL、交互式会话或Spark作业中通过Catalog名称访问数据。该功能适用于需要元数据隔离或跨数据源分析的场景。

Catalog介绍

EMR Serverless Spark提供了灵活的Catalog管理机制,支持多种类型的Catalog(例如Paimon、Iceberg、StarRocks等),以满足不同场景的需求。除了数据目录方式外,还支持内置的Catalog以及自定义Catalog。本部分将详细介绍Serverless Spark中Catalog的分类、配置方法及其使用方式。

Catalog类型

支持数据源

添加方式

特性说明

使用方式

数据目录Catalog

需在数据目录页面手动添加Catalog。

新增Catalog后,需要重启一次正在运行的会话,以使其生效。

  • 在数据开发页面的SQL编辑器中,选择目标Catalog。

  • 直接在SQL编辑器中USE <catalogName>;

  • 直接在SQL编辑器中SELECT * FROM <catalogName>.db.tbl;

自定义Catalog

Paimon、Iceberg等

通过编辑会话,在Spark 配置中添加相应类型的参数。

需自行配置参数,支持扩展多种数据源。详情请参见使用Iceberg和Paimon使用指南。

-- 切换到自定义Catalog
USE <catalogName>;

-- 或者直接引用表
SELECT * FROM <catalogName>.db.tbl;

添加数据目录

  1. 进入数据目录页面。

    1. 登录E-MapReduce控制台。

    2. 在左侧导航栏,选择EMR Serverless > Spark。

    3. 在Spark页面,单击目标工作空间名称。

    4. 在EMR Serverless Spark页面,单击左侧导航栏中的数据目录。

      说明

      数据目录页面为您展示了创建集群时您选择的DLF数据目录下的数据库和表。

  2. 单击添加数据目录。

  3. 在添加数据目录对话框中,选择Catalog类型并配置相应参数,单击添加。支持以下Catalog类型。

DLF数据目录

DLF 数据目录是一种元数据管理服务,用于管理和查询存储在数据湖中的元数据。通过选择已有的DLF数据目录或创建新的数据目录,您可以快速接入数据湖中的元数据。

如果您想创建新的DLF数据目录,可以单击创建数据目录,跳转至数据湖构建控制台创建,详情请参见元数据管理。

说明

使用DLF数据目录时,仅支持使用以下引擎版本:esr-4.3.0及以上版本、esr-3.3.0及以上版本、esr-2.7.0及以上版本。

Hive Metastore(HMS)数据目录

外部 Hive Metastore是一种独立的元数据服务,通常用于管理Hive表的元数据。通过配置该服务,您可以将外部Hive Metastore中的元数据集成到当前环境中。

使用该方式,需确保Serverless Spark与该服务所在VPC已经连通。

参数

说明

网络连接

当前环境与外部Hive Metastore所在VPC的网络连接配置。

在下拉列表中选择已创建的网络连接名称,具体请参见步骤一:新增网络连接。

说明
  • 在添加数据目录时,所有数据目录必须统一使用同一网络连接(以第一个添加的数据目录为准)。

  • 该网络连接会作为默认网络,自动加载到当前工作空间后续拉起的所有计算资源,并用于该数据目录的连通性测试。

  • 如需使用其他网络连接访问某个数据目录,请在提交任务/创建会话时手动指定对应的网络连接(手动指定的网络连接优先级更高)。

Metastore 服务地址

外部Hive Metastore的服务地址,格式为thrift://<metastore-host>:<port>。

其中:

  • <metastore-host>:Hive Metastore服务的主机名或IP地址。

  • <port>:Hive Metastore服务的端口号,默认为 9083。

Kerberos认证

如果您的外部Hive Metastore开启Kerberos认证,您需要指定keytab文件地址,以及Principal名称。

  • Kerberos keytab 文件地址:Kerberos keytab文件路径。

  • Kerberos principal:keytab文件中包含的Principal的名称,用于与Kerberos服务进行身份验证。

    说明

    您可以使用klist -kt <keytab文件>命令查看目标keytab文件中Principal的名称。

添加外部Metastore服务,请参见连接外部Hive Metastore Service。

StarRocks数据目录

StarRocks是一款高性能的分析型数据库。通过添加StarRocks数据目录,您可以在EMR Serverless Spark中注册StarRocks实例的元数据信息,添加成功后即可在任务和会话中直接读写StarRocks中的数据,无需在每个任务中单独配置连接参数。使用该方式,需确保Serverless Spark与StarRocks实例所在VPC已连通。

添加成功后,您可以在SQL中通过三段式语法直接读写StarRocks中的数据,例如:SELECT * FROM <catalogName>.<dbName>.<tableName>;

说明

使用StarRocks数据目录,仅支持使用以下引擎版本:esr-4.8.0及以上版本、esr-5.2.0及以上版本。

参数

说明

数据目录名称

StarRocks数据目录的名称,用于在SQL中引用该Catalog。同一工作空间内,数据目录名称不允许重复。

网络连接

当前环境与StarRocks实例所在VPC的网络连接配置。在下拉列表中选择已创建的网络连接名称。具体操作,请参见步骤一:新增网络连接。

说明
  • 在添加数据目录时,所有数据目录必须统一使用同一网络连接(以第一个添加的数据目录为准)。

  • 该网络连接会作为默认网络,自动加载到当前工作空间后续拉起的所有计算资源,并用于该数据目录的连通性测试。

  • 如需使用其他网络连接访问某个数据目录,请在提交任务/创建会话时手动指定对应的网络连接(手动指定的网络连接优先级更高)。

Endpoint

StarRocks的FE访问地址,fe--internal.starrocks.aliyuncs.com。

查询端口

StarRocks的FE查询端口,通常是9030。

用户名

访问StarRocks的用户名。该用户名将用于Spark任务读写StarRocks数据时的身份认证。

密码

上述用户对应的密码。

读写StarRocks数据的详细操作,请参见读写StarRocks。

Hologres数据目录

Hologres是一款实时数仓产品,支持海量数据的实时写入和实时分析。通过添加Hologres数据目录,您可以在EMR Serverless Spark中注册Hologres实例的元数据信息,添加成功后即可在任务和会话中直接读写Hologres中的数据,无需在每个任务中单独配置连接参数。使用该方式,需确保Serverless Spark与Hologres实例所在VPC已连通。

添加成功后,您可以在SQL中通过三段式语法直接读写Hologres中的数据,每个 Catalog 严格绑定一个 Hologres Database,且不可跨库访问(即无法通过同一 Catalog 访问多个 Hologres DB)。Catalog 内部的逻辑组织与 Hologres 保持一致:

Spark 概念

对应 Hologres 概念

说明

Catalog

Database

如 hologres_external_test_db → 映射 Hologres 中的 test_db 数据库。

Namespace

Schema

如 public、test_schema;默认为 public,可通过 USE 切换当前默认 Namespace。

Table

Table

必须显式指定 namespace.table_name(如 public.test),或先 USE namespace 后直接引用表名。

说明

使用Hologres数据目录,仅支持使用以下引擎版本:esr-4.9.0及以上版本。

参数

说明

数据目录名称

Hologres数据目录的名称,用于在SQL中引用该Catalog。同一工作空间内,数据目录名称不允许重复。

网络连接

当前环境与Hologres实例所在VPC的网络连接配置。在下拉列表中选择已创建的网络连接名称。具体操作,请参见步骤一:新增网络连接。

说明
  • 在添加数据目录时,所有数据目录必须统一使用同一网络连接(以第一个添加的数据目录为准)。

  • 该网络连接会作为默认网络,自动加载到当前工作空间后续拉起的所有计算资源,并用于该数据目录的连通性测试。

  • 如需使用其他网络连接访问某个数据目录,请在提交任务/创建会话时手动指定对应的网络连接(手动指定的网络连接优先级更高)。

Endpoint

Hologres实例访问地址,可在Hologres控制台的实例详情页获取。

查询端口

Hologres实例的端口号,通常是80。

用户名

访问Hologres的用户名。该用户名将用于Spark任务读写Hologres数据时的身份认证。

  • 自定义账号的用户名,格式为BASIC$<user_name>。

  • 阿里云账号或RAM用户的AccessKey ID。

密码

上述用户对应的密码。

  • 自定义账号的密码。

  • 阿里云账号或RAM用户的AccessKey Secret。

读写Hologres数据的详细操作,请参见读写Hologres。

查看数据库和表

  1. 在数据目录页面,单击数据目录ID。

    展示当前数据目录下的所有数据库信息。

  2. 单击操作列的表。

    展示当前数据库下的所有数据表信息。

  3. 单击操作列的字段。

    展示当前数据表的表信息和列信息。

使用数据目录

在SQL中使用数据目录

添加数据目录后,您可以在SQL开发或交互式会话中通过Catalog名称访问其中的库表,无需在每个任务中重复填写连接信息。

切换默认Catalog和数据库

切换后,后续SQL可以直接引用表名,不必写完整的三段式名称。

-- 切换默认Catalog
USE <catalogName>;

-- 切换默认Catalog和数据库
USE <catalogName>.<dbName>;

使用三段式名称查询

不切换默认Catalog时,用catalogName.dbName.tableName直接引用目标表。

SELECT * FROM <catalogName>.<dbName>.<tableName>;

Hologres数据目录的第二段名称是Schema,不是数据库。每个Hologres数据目录绑定一个Database,默认Schema为public。

-- Hologres:第二段为Schema,默认为public
SELECT * FROM <hologresCatalog>.public.<tableName>;

-- 也可以先切换Catalog和Schema,再直接引用表名
USE <hologresCatalog>;
USE public;
SELECT * FROM <tableName>;

跨Catalog关联查询

同一条SQL中可以用三段式名称引用不同数据目录的表,实现跨数据源关联。例如将DLF中的用户维表与Hologres中的订单表关联:

SELECT
  d.user_id,
  d.user_name,
  o.order_id,
  o.amount
FROM dlf_catalog.user_db.dim_user AS d
JOIN hologres_catalog.public.orders AS o
  ON d.user_id = o.user_id;

执行前请确认相关数据目录均已添加、网络可达,且当前身份具有对应库表的访问权限。

在PySpark中使用数据目录

在PySpark中,同样使用三段式名称读写数据目录中的表。

# 读取表
df = spark.table("<catalogName>.<dbName>.<tableName>")

# 写入表
(
    df.write
      .mode("append")
      .saveAsTable("<catalogName>.<dbName>.<tableName>")
)

也可以读取不同数据目录的表后再关联:

dim_user = spark.table("dlf_catalog.user_db.dim_user")
orders = spark.table("hologres_catalog.public.orders")

result = orders.join(dim_user, on="user_id", how="inner")
result.show()

写入前请确认目标数据源支持相应的写入方式,且当前账号具有写入权限。

删除数据目录

  1. 在数据目录页面,找到目标数据目录。

  2. 单击操作列的删除,并按页面提示确认。

说明

删除数据目录仅移除当前工作空间中的注册信息,不会删除DLF、HMS、StarRocks或Hologres中的数据库、表和数据。

删除后,正在运行的会话可能仍保留原有配置。请重启会话,确认该Catalog已不可访问。

常见问题

添加数据目录后,SQL中提示Catalog不存在

正在运行的交互式会话不会自动刷新数据目录配置。请重启会话后重试,并确认SQL中的Catalog名称与数据目录页面显示的一致。新启动的会话和作业会在启动时加载最新配置。

数据目录添加失败或连通性测试失败

请按以下顺序排查:

  1. 网络连接是否处于可用状态。

  2. 工作空间与目标服务是否位于同一地域和预期VPC。

  3. 路由、安全组和目标服务白名单是否允许访问。

  4. Endpoint和端口是否填写正确。

  5. 用户名、密码或认证方式是否正确。

  6. 当前引擎版本是否满足该数据目录类型的要求。

DLF列表中没有目标数据目录

DLF数据目录与地域绑定。请确认目标数据目录与当前工作空间位于同一地域,并检查当前账号是否具有读取该数据目录的权限。

HMS连接超时

请检查网络连接状态、安全组规则、HMS服务运行状态以及Thrift端口。端口默认为9083,实际以部署配置为准。如果提示地址无法解析,请检查工作空间所在VPC的DNS配置,或改用可达的内网地址。

Hologres查询提示表不存在

Hologres数据目录绑定单个Database,查询时还需指定正确的Schema。请使用catalogName.schemaName.tableName,或先执行USE <schemaName>。默认Schema通常为public。

可以在一个工作空间中添加多个数据目录吗

可以。同类型和不同类型的数据目录都可以添加多个,各自独立注册,但名称在同一工作空间内不能重复。需要访问多个Hologres Database时,请为每个Database分别添加一个数据目录。

删除数据目录会删除业务数据吗

不会。删除操作只移除工作空间中的注册信息,外部服务中的数据库、表和数据不受影响。

为什么Catalog类型中没有MaxCompute和Iceberg

MaxCompute通过Spark MaxCompute Connector接入,不在数据目录页面注册。Iceberg属于自定义Catalog,需要在会话或作业的Spark配置中启用,详情请参见使用Iceberg。

DLF数据目录默认使用Paimon格式,无需单独添加Paimon类型的数据目录。关于Paimon的更多用法,请参见Paimon使用指南。