【Hive】new HiveConf()时加载的配置浅析

简单看下源码:
org.apache.hadoop.hive.conf.HiveConf

HiveConf中有静态代码块,内容就是调用findConfigFile方法,尝试读取hive-default.xmlhive-site.xmlhivemetastore-site.xmlhiveserver2-site.xml。四个文件的内容。

java 复制代码
    static {
        ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
        if (classLoader == null) {
            classLoader = HiveConf.class.getClassLoader();
        }

        hiveDefaultURL = classLoader.getResource("hive-default.xml");
        hiveSiteURL = findConfigFile(classLoader, "hive-site.xml", true);
        hivemetastoreSiteUrl = findConfigFile(classLoader, "hivemetastore-site.xml", false);
        hiveServer2SiteUrl = findConfigFile(classLoader, "hiveserver2-site.xml", false);
省略... 
}

findConfigFile方法就更简单了
System.getenv("...")就是查找系统环境变量HIVE_CONF_DIRHIVE_HOME,显然HIVE_CONF_DIRHIVE_HOME优先级更高。然后组装成路径,并读取文件内容。

java 复制代码
    private static URL findConfigFile(ClassLoader classLoader, String name, boolean doLog) {
        URL result = classLoader.getResource(name);
        if (result == null) {
            String confPath = System.getenv("HIVE_CONF_DIR");
            result = checkConfigFile(new File(confPath, name));
            if (result == null) {
                String homePath = System.getenv("HIVE_HOME");
                String nameInConf = "conf" + File.separator + name;
                result = checkConfigFile(new File(homePath, nameInConf));
                省略...

总结:

使用HiveConf特别简单额,设置好环境变量HIVE_CONF_DIRHIVE_HOME后就可以在代码中用了。
注意:是环境变量,不是java系统变量,即System.setProperty()和-D是不行的,这两项都是设置java变量,不是操作系统变量

相关推荐
weixin_307779131 天前
在 Microsoft Azure 上部署 ClickHouse 数据仓库:托管服务与自行部署的全面指南
开发语言·数据库·数据仓库·云计算·azure
weixin_307779131 天前
AWS Redshift 数据仓库完整配置与自动化管理指南
开发语言·数据仓库·python·云计算·aws
yumgpkpm2 天前
CMP (类ClouderaCDP7.3(404次编译) )华为鲲鹏Aarch64(ARM)信创环境多个mysql数据库汇聚的操作指南
大数据·hive·hadoop·zookeeper·big data·cloudera
华阙之梦2 天前
【在 Windows 上运行 Apache Hadoop 或 Spark/GeoTrellis 涉及 HDFS 】
hadoop·windows·apache
还是大剑师兰特2 天前
Hadoop面试题及详细答案 110题 (96-105)-- Hadoop性能优化
hadoop·大剑师·hadoop面试题
ApacheSeaTunnel2 天前
新兴数据湖仓手册·从分层架构到数据湖仓架构(2025):数据仓库分层的概念与设计
大数据·数据仓库·开源·数据湖·dataops·白鲸开源·底层技术
洛克大航海2 天前
Ubuntu中使用Hadoop的HDFS和MapReduce
hadoop·ubuntu·hdfs·mapreduce
夫唯不争,故无尤也3 天前
Maven创建Java项目实战全流程
java·数据仓库·hive·hadoop·maven
想ai抽3 天前
深入starrocks-怎样实现多列联合统计信息
java·数据库·数据仓库
还是大剑师兰特3 天前
Hadoop面试题及详细答案 110题 (71-85)-- 集群部署与运维
大数据·hadoop·大剑师·hadoop面试题