更新时间:2025-08-01 GMT+08:00

配置Hive表不同分区分别存储至OBS和HDFS

操作场景

存算分离场景下,Hive分区表支持不同的分区分别指定不同的存储源,可以指定一个分区表中不同分区的存储源为OBS或者HDFS。

此章节仅说明分区表指定存储源的能力,关于Hive如何在存算分离场景下对接OBS,对接指导可参考Hive对接OBS文件系统章节。

约束与限制

本特性仅适用于MRS 3.2.0及之后版本。

前提条件

已安装Hive客户端。下载并安装集群客户端的具体操作,请参考安装MRS集群客户端

操作示例

  1. 以Hive客户端安装用户登录安装客户端的节点。
  2. 执行以下命令,切换到客户端安装目录。
    cd 客户端安装目录

    例如安装目录为“/opt/client”,则执行以下命令:

    cd /opt/client
  3. 执行以下命令配置环境变量。
    source bigdata_env
  4. 集群是否启用了Kerberos认证。
    • 是,执行以下命令进行用户认证:
      kinit Hive业务用户
    • 否,执行5
  5. 执行以下命令登录Hive客户端。
    beeline
  6. 执行如下命令创建Hive分区表“table_1”,指定分区“pt='2021-12-12'”的路径为“hdfs://xxx”,指定分区“pt='2021-12-18'”的路径为“obs://并行文件系统名称/xxx”:

    创建Hive分区表“table_1”:

    create table table_1(id string) partitioned by(pt string) [stored as [orc|textfile|parquet|...]];

    指定分区“pt='2021-12-12'”的路径为“hdfs://xxx”:

    alter table table_1 add partition(pt='2021-12-12') location 'hdfs://xxx';

    指定分区“pt='2021-12-12'”的路径为“obs://xxx”:

    alter table table_1 add partition(pt='2021-12-18') location 'obs://并行文件系统名称/xxx';
  7. 给分区表“table_1”中插入数据后,对应的分区数据存储在对应的存储源上,可以使用desc查看分区的Location,执行以下命令查看路径下的数据:
    desc formatted table_1 partition(pt='2021-12-18');

相关文档

关于Hive表的Location是否支持跨OBS和HDFS路径存储说明请参见Hive表的Location支持跨OBS和HDFS路径吗