• Hive设置配置参数的方法,列举8个常用配置


    Hive设置配置参数的方法

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

    方法一:hive-site.xml配置参数

    • 在Hive中,所有的默认配置都在 "{HIVE_HOME}/conf/hive-default.xml "文件中,如果需要对默认的配置进行修改,可以创建一个 "hive-site.xml" 文件,放在 " {HIVE_HOME}/conf"目录下。里面可以对一些配置进行个性化设定。在hive-site.xml的格式如下:
    <configuration>
        <property>
            <name>hive.metastore.warehouse.dir</name>
            <value>/user/hive/warehouse</value>
            <description>location of
                  default database for the warehouse</description>
        </property>
    </configuration>
    
    • 所有的配置都是放在<configuration></configuration>标签之间,一个configuration标签里面可以存在多个<property></property>标签。<name>标签里面就是我们想要设定属性的名称;<value>标签里面是我们想要设定的值;<description;<标签是描述在这个属性的,可以不写。绝大多少配置都是在xml文件里面配置的,因为在这里做的配置都全局用户都生效,而且是永久的。用户自定义配置会覆盖默认配置。另外,Hive也会读入Hadoop的配置,因为Hive是作为Hadoop的客户端启动的,Hive的配置会覆盖Hadoop的配置。

    方法二:命令行参数

    • 在启动Hive cli的时候进行配置,可以在命令行添加-hiveconf param=value来设定参数,例如:
    hive --hiveconf mapreduce.job.queuename=queue1
    
    • 这样在Hive中所有MapReduce作业都提交到队列queue1中。这一设定对本次启动的会话有效,下次启动需要重新配置。

    方法三:进入cli时候声明

    • 在已经进入cli时进行参数声明,可以在HQL中使用SET关键字设定参数,例如:
    set mapreduce.job.queuename=queue1;
    

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

    列举8个常用的配置参数

    • 0-hive.fetch.task.conversion=more;将hive拉取的模式设置为more模式
    • 1-hive.exec.mode.local.auto 决定 Hive 是否应该自动地根据输入文件大小,在本地运行(在GateWay运行) ;
    • 2-hive.auto.convert.join :是否根据输入小表的大小,自动将 Reduce 端的 Common Join 转化为 Map Join,从而加快大表关联小表的 Join 速度。 默认:false。
    • 3-mapred.reduce.tasks :所提交 Job 的 reduer 的个数,使用 Hadoop Client 的配置。 默认是-1,表示Job执行的个数交由Hive来分配;
      mapred.map.tasks:设置提交Job的map端个数;
    • 4-hive.map.aggr=true 开启map端聚合;
      hive.groupby.skewindata=true :决定 group by 操作是否支持倾斜的数据。
      原理是,在Group by中,对一些比较小的分区进行合并,默认是false;
    • 5-hive.merge.mapredfiles :是否开启合并 Map/Reduce 小文件,对于 Hadoop 0.20 以前的版本,起一首新的 Map/Reduce Job,对于 0.20 以后的版本,则是起使用 CombineInputFormat 的 MapOnly Job。 默认是:false;
    • 6-hive.mapred.mode :Map/Redure 模式,如果设置为 strict,将不允许笛卡尔积。 默认是:'nonstrict';
    • 7-hive.exec.parallel :是否开启 map/reduce job的并发提交。
      默认Map/Reduce job是顺序执行的,默认并发数量是8,可以配置。默认是:false;
    • 8-hive.exec.dynamic.partition =true:是否打开动态分区。 需要打开,默认:false;
      set hive.exec.dynamic.partition.mode=nonstirct
  • 相关阅读:
    如何将u盘、移动硬盘转化为活动分区--绝招
    jstl错误排除:According to TLD or attribute directive in tag file, attribute value does not accept any expressions
    eclipse中package explore和project explore 怎么相互切换???
    硬盘知识区
    Sublime Text 3下Emmet使用技巧
    sublime text3中设置Emmet输入标签自动闭合
    window如何分区
    HTTP缓存
    react-router 4实现代码分割(code spliting)
    Vue练手项目(包含typescript版本)
  • 原文地址:https://www.cnblogs.com/sx66/p/12039559.html
Copyright © 2020-2023  润新知