跳到内容

Lance Hive 命名空间

Lance Hive 命名空间是使用 Apache Hive MetaStore (HMS) 的实现。有关 HMS 的更多详细信息,请阅读 HMS 管理手册 2.xHMS 管理手册 3.x

配置

Lance Hive 命名空间接受以下配置属性:

属性 必需 描述 默认 示例
client.pool-size HMS 客户端连接池的大小 3 5
Hive Catalog 上湖仓的存储根位置 当前工作目录 /my/dir, s3://bucket/prefix
storage.* 访问表的附加存储配置 storage.region=us-west-2

特定版本配置

Hive 2.x:使用上面列出的配置属性。

Hive 3.x:使用与 Hive 2.x 相同的配置属性,并为 Catalog 级别操作额外添加一个 Catalog 名称常量 (hive)。

命名空间映射

HMS 服务器可以被视为 Lance 的根命名空间。

对于 HMS 2.x 及以下版本,HMS 中的数据库映射到第一级 Lance 命名空间,从而形成一个整体的 2 级 Lance 命名空间。

对于 HMS 3.x 及以上版本,HMS 中的 Catalog 映射到第一级 Lance 命名空间,HMS 中的数据库映射到第二级 Lance 命名空间,从而形成一个整体的 3 级 Lance 命名空间。

表定义

Lance 表应在 HMS 中显示为 Table 对象,并满足以下要求:

  1. tableType 必须设置为 EXTERNAL_TABLE,表示这不是一个托管的 Hive 表
  2. storageDescriptor 中的 location 必须指向 Lance 表的根位置
  3. parameters 必须遵循以下规定
    1. 有一个键table_type设置为lance(不区分大小写)
    2. 有一个键managed_by设置为storageimpl(不区分大小写)。如果未设置,则默认为storage
    3. 有一个键version设置为表的最新数字版本号。此字段仅在managed_by=impl时受尊重

实施托管表的额外要求

对实现管理的表的更新必须使用 Hive 的原子更新功能 (HIVE-26882),并使用 version 参数值通过 alter_table_with_environment_context 执行条件更新