.hiverc文件加载

码界捕手说
• 阅读 1493

在将hive client切换到beeline梳理hive上的udf的时候,发现工程中好多任务的代码都是直接注册方法,没有显示的add jar,后来在hive的conf目录下发现了.hiverc文件中有两行add jar的命令,瞬间好奇怎么加载的这个文件,一开始以为是在bin/hive脚本中加载的,后来发现不是,是在client启动的时候CliDriver中记载的,加载的代码如下:

public void processInitFiles(CliSessionState ss) throws IOException {
    boolean saveSilent = ss.getIsSilent();
    ss.setIsSilent(true);
    for (String initFile : ss.initFiles) {
      int rc = processFile(initFile);
      if (rc != 0) {
        System.exit(rc);
      }
    }
    if (ss.initFiles.size() == 0) {
      if (System.getenv("HIVE_HOME") != null) {
        String hivercDefault = System.getenv("HIVE_HOME") + File.separator +
          "bin" + File.separator + HIVERCFILE;
        if (new File(hivercDefault).exists()) {
          int rc = processFile(hivercDefault);
          if (rc != 0) {
            System.exit(rc);
          }
          console.printError("Putting the global hiverc in " +
                             "$HIVE_HOME/bin/.hiverc is deprecated. Please "+
                             "use $HIVE_CONF_DIR/.hiverc instead.");
        }
      }
      if (System.getenv("HIVE_CONF_DIR") != null) {
        String hivercDefault = System.getenv("HIVE_CONF_DIR") + File.separator
          + HIVERCFILE;
        if (new File(hivercDefault).exists()) {
          int rc = processFile(hivercDefault);
          if (rc != 0) {
            System.exit(rc);
          }
        }
      }
      if (System.getProperty("user.home") != null) {
        String hivercUser = System.getProperty("user.home") + File.separator +
          HIVERCFILE;
        if (new File(hivercUser).exists()) {
          int rc = processFile(hivercUser);
          if (rc != 0) {
            System.exit(rc);
          }
        }
      }
    }
    ss.setIsSilent(saveSilent);
  }
点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
3年前
hive(02)、数据仓库Hive的基本使用
       在上篇《hive(01)、基于hadoop集群的数据仓库Hive搭建实践(https://my.oschina.net/zss1993/blog/1602402)》一文中我们搭建了分布式的数据仓库Hive服务,本文主要是在上文的基础上结合Hadoop分布式文件系统,将结构化的数据文件映射为一张数据库表,将sql语句转换为MapRedu
Stella981 Stella981
3年前
Hive Transaction 事务性 小试
  提到Hive一般都会想到,Hive是数据仓库,支持类SQL查询,有很多语法支持,可以嵌套MR,写Transform、写UDF/UDAF等,但是,不支持更新操作。所以Hive的常见也一般都是一次写入,频繁读取。从Hive0.13开始,加入了ACID的新feature,但是0.13的时候还不支持insert、update和delete操作,我也
Stella981 Stella981
3年前
Dbeaver连接Hive和Mysql的配置
1.连接Hive首选需要配置Hive这里我们采用的是JDBC的连接方式(1)在Hive中后台启动hiveserver2root@hadoop101hivebin/hiveserver2&(2)启动beelinebigdata@hadoop101hive$bin/be
Stella981 Stella981
3年前
Hive
问题现象写了一个简单的shell脚本调用hive执行组装的sql,在执行时总是报cannotrecognizeinputnear'<EOF'inselectclause错误,单独在hive提示符下却能正常执行。!/bin/bashkeyname"type"sql"select
Stella981 Stella981
3年前
Hive建表的Location问题
最近公司在使用Hive做项目测试,所以就在Hive上面建了一些表,做测试。使用建表语句后发现数据被自动覆盖了,现在了解到的情况是这样的。Hive中,表的Metadata信息全部存储在MySQL中。而存储在MySQL中的数据是没有校验过程的。也就是说,你可以创建一个逻辑错误的表,两个表指向同一个HDFS文件也是有可能的。所以,在使用CREA
Stella981 Stella981
3年前
Hive学习之路 (三)Hive元数据信息对应MySQL数据库表
概述Hive的元数据信息通常存储在关系型数据库中,常用MySQL数据库作为元数据库管理。上一篇hive的安装也是将元数据信息存放在MySQL数据库中。Hive的元数据信息在MySQL数据中有57张表!(https://oscimg.oschina.net/oscnet/622274765e1205e906542f39ccb50db93
Stella981 Stella981
3年前
Flink 1.11 与 Hive 批流一体数仓实践
导读:Flink从1.9.0开始提供与Hive集成的功能,随着几个版本的迭代,在最新的Flink1.11中,与Hive集成的功能进一步深化,并且开始尝试将流计算场景与Hive进行整合。本文主要分享在Flink1.11中对接Hive的新特性,以及如何利用Flink对Hive数仓进行实时化改造,从而实现批流
Stella981 Stella981
3年前
Hive基础学习
本节我们主要来学习一些hive的命令操作,同时探究一下Hive,HDFS,MySQL之间的联系,从而更好的理解其内部原理。常用的基础命令此处的命令都是指在hive命令行下执行的命令,所有的命令别忘记以分号结尾。hive show databases;查看当前数据库列表hive create databases dbna
Stella981 Stella981
3年前
Hive 和普通关系数据库的异同
1.查询语言。由于SQL被广泛的应用在数据仓库中,因此,专门针对Hive的特性设计了类SQL的查询语言HQL。熟悉SQL开发的开发者可以很方便的使用Hive进行开发。2.数据存储位置。Hive是建立在Hadoop之上的,所有Hive的数据都是存储在HDFS(https://www.oschina.net/act
hive 、spark 、flink之想一想
hive1:hive是怎么产生的?2:hive的框架是怎么样的?3:hive执行流程是什么?4:hivesql是如何把sql语句一步一步到最后执行的?5:hivesql任务常用参数调优做过什么?spark6:spark是怎么产生的?7:spark框架是怎么
sql优化谓词下推在join场景中的应用
谓词下推的原理是将sql中的限制条件的逻辑尽可能的提前在sql中执行,从而减少加载的数据量,提升下游数据处理的效率以及减少内存消耗。该种方式在hive,MySQL,Doris的语法中均适用。