You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

创建Hive Catalog后show tables正常,查询时出现UnknownHostException错误

Apache Doris Hive Catalog查询报UnknownHostException问题排查

问题现象

创建Hive Catalog后,执行show tables等元数据命令正常,但执行查询语句时抛出java.net.UnknownHostException: xxxxx错误。具体复现步骤:

  1. 创建Hive Catalog:
CREATE CATALOG hive_catalog PROPERTIES (
    'type'='hms',
    'hive.metastore.uris' = 'thrift://172.0.0.1:9083',
    'hadoop.username' = 'hive'
);
  1. 元数据命令正常执行:
switch hive_catalog; 
show databases;
use my_hive_db_name;
show tables;

可正常获取Hive数据库和表的元数据。
3. 查询语句报错:

select * from hive_catalog.my_hive_db_name.my_table_name;

报错信息:

java.net.UnknownHostException: xxxxx

原因分析

  • show tables等命令仅与**Hive Metastore(HMS)**交互,获取的是表的元数据信息(库名、表名、表结构等),不需要访问HDFS存储的实际数据文件,所以只要Doris能连接到HMS服务,就能正常返回结果。
  • 查询语句需要从HDFS读取实际数据文件,而HMS中存储的HDFS文件路径使用了主机名(比如hdfs://xxxxx:9000/user/hive/warehouse/...),Doris集群的所有节点无法解析这个主机名xxxxx,因此抛出UnknownHostException。

解决方案

针对这个问题,有几种可行的解决方式:

  1. 在Doris所有节点配置主机名映射
    在每个Doris节点的/etc/hosts文件中添加映射关系:

    <主机xxxxx对应的IP地址>  xxxxx
    

    添加后重启Doris服务确保生效。

  2. 修改Hive的HDFS路径配置为IP地址
    如果有权限修改Hive配置,可调整Hive的存储路径使用IP而非主机名,这样HMS返回的文件路径就是IP形式,Doris能直接访问。

  3. 在Doris集群配置HDFS的nameservice(如果HDFS是HA集群)
    如果HDFS是HA模式,确保Doris所有节点的core-site.xml和hdfs-site.xml中配置了正确的nameservice信息,并且能解析nameservice对应的所有节点主机名。

内容的提问来源于stack exchange,提问作者Young

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 00:22:39