【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变量,不是操作系统变量

相关推荐
码字的字节12 小时前
深入解析Hadoop RPC:技术细节与推广应用
hadoop·rpc
码字的字节12 小时前
深入解析Hadoop架构设计:原理、组件与应用
大数据·hadoop·分布式·hadoop架构设计
LucianaiB19 小时前
AI 时代的分布式多模态数据处理实践:我的 ODPS 实践之旅、思考与展望
大数据·数据仓库·人工智能·分布式·odps
༺水墨石༻1 天前
低版本hive(1.2.1)UDF实现清除历史分区数据
数据仓库·hive·hadoop
Leo.yuan2 天前
数据清洗(ETL/ELT)原理与工具选择指南:企业数字化转型的核心引擎
大数据·数据仓库·数据挖掘·数据分析·etl
isNotNullX3 天前
实时数仓和离线数仓还分不清楚?看完就懂了
大数据·数据库·数据仓库·人工智能·数据分析
熊猫钓鱼>_>3 天前
Hadoop 用户入门指南:驾驭大数据的力量
大数据·hadoop·分布式
William一直在路上3 天前
SpringBoot 拦截器和过滤器的区别
hive·spring boot·后端
Leo.yuan3 天前
数据分析师如何构建自己的底层逻辑?
大数据·数据仓库·人工智能·数据挖掘·数据分析
抛砖者3 天前
hive/spark sql中unix_timestamp 函数的坑以及时间戳相关的转换
hive·sql·spark