• Hive设置参数的三种方法


    Hive提供三种可以改变环境变量的方法,分别是:(1)、修改${HIVE_HOME}/conf/hive-site.xml配置文件;(2)、命令行参数;(3)、在已经进入cli时进行参数声明。下面分别来介绍这几种设定。

      方法一:
      在Hive中,所有的默认配置都在${HIVE_HOME}/conf/hive-default.xml文件中,如果需要对默认的配置进行修改,可以创建一个hive-site.xml文件,放在${HIVE_HOME}/conf目录下。里面可以对一些配置进行个性化设定。在hive-site.xml的格式如下:

    1 <configuration>
    2     <property>
    3         <name>hive.metastore.warehouse.dir</name>
    4         <value>/user/hive/warehouse</value>
    5         <description>location of
    6               default database for the warehouse</description>
    7     </property>
    8 </configuration>

      所有的配置都是放在<configuration></configuration>标签之间,一个configuration标签里面可以存在多个<property></property>标签。<name>标签里面就是我们想要设定属性的名称;<value>标签里面是我们想要设定的值;<description;<标签是描述在这个属性的,可以不写。绝大多少配置都是在xml文件里面配置的,因为在这里做的配置都全局用户都生效,而且是永久的。用户自定义配置会覆盖默认配置。另外,Hive也会读入Hadoop的配置,因为Hive是作为Hadoop的客户端启动的,Hive的配置会覆盖Hadoop的配置。

      方法二:
      在启动Hive cli的时候进行配置,可以在命令行添加-hiveconf param=value来设定参数,例如:

    1 [wyp@master ~]$ hive --hiveconf mapreduce.job.queuename=queue1

    这样在Hive中所有MapReduce作业都提交到队列queue1中。这一设定对本次启动的会话有效,下次启动需要重新配置。

      方法三:
      在已经进入cli时进行参数声明,可以在HQL中使用SET关键字设定参数,例如:

    1 hive> set mapreduce.job.queuename=queue1;

    这样也能达到方法二的效果。这种配置也是对本次启动的会话有效,下次启动需要重新配置。在HQL中使用SET关键字还可以查看配置的值,如下:

    1 hive> set mapreduce.job.queuename;
    2 mapreduce.job.queuename=queue1

    我们可以得到mapreduce.job.queuename=queue1。如果set后面什么都不添加,这样可以查到Hive的所有属性配置,如下:

    01 hive> set;
    02 datanucleus.autoCreateSchema=true
    03 datanucleus.autoStartMechanismMode=checked
    04 datanucleus.cache.level2=false
    05 datanucleus.cache.level2.type=none
    06 datanucleus.connectionPoolingType=DBCP
    07 datanucleus.identifierFactory=datanucleus
    08 datanucleus.plugin.pluginRegistryBundleCheck=LOG
    09 datanucleus.storeManagerType=rdbms
    10 datanucleus.transactionIsolation=read-committed
    11 datanucleus.validateColumns=false
    12 datanucleus.validateConstraints=false
    13 datanucleus.validateTables=false
    14  
    15 ............................

      上述三种设定方式的优先级依次递增。即参数声明覆盖命令行参数,命令行参数覆盖配置文件设定。

      注意:某些系统级的参数,例如log4j相关的设定,必须用前两种方式设定,因为那些参数的读取在会话建立以前已经完成了。所以在HQL中设定是无效的。这个特列可以参见本博客《Hive日志调试》进行了解。
  • 相关阅读:
    day 71
    day 70
    day 69 Django 视图层(views)and 模板层(templates)
    Python基础语法 第1节课(标识符、注释、缩进、输入输出、变量、数据类型)
    第019讲:函数 我的地盘听我的--函数变量的作用域(课后测试题及答案 )
    第018讲:函数 灵活即强大(课后测试题及答案 )
    第017讲:函数 python的乐高积木(课后测试题及答案 )
    第012课:列表:一个打了激素的数组3(课后习题及解答)
    第011讲:列表:一个打了激素的数组2 (课后习题及答案)
    第016讲:序列!序列! (课后测试题及答案 )
  • 原文地址:https://www.cnblogs.com/huangmr0811/p/5571001.html
Copyright © 2020-2023  润新知