hive 中各种参数

在 Apache Hive 中,参数(也称为配置属性)用于控制 Hive 的行为和性能。这些参数可以优化查询性能、调整资源使用、解决数据倾斜问题等。Hive 参数通常分为以下几类:


1. 查询执行参数

这些参数用于控制查询的执行方式和性能。

1.1 MapReduce 相关参数

  • hive.exec.reducers.bytes.per.reducer:

    • 默认值:256 MB(256000000

    • 作用:每个 Reduce 任务处理的数据量。

    • 示例:SET hive.exec.reducers.bytes.per.reducer = 500000000;(每个 Reducer 处理 500 MB 数据)

  • hive.exec.reducers.max:

    • 默认值:1009

    • 作用:设置最大的 Reduce 任务数。

    • 示例:SET hive.exec.reducers.max = 2000;

  • hive.exec.parallel:

    • 默认值:false

    • 作用:是否启用并行执行。

    • 示例:SET hive.exec.parallel = true;

  • hive.exec.dynamic.partition:

    • 默认值:false

    • 作用:是否启用动态分区。

    • 示例:SET hive.exec.dynamic.partition = true;

  • hive.exec.dynamic.partition.mode:

    • 默认值:strict

    • 作用:动态分区模式,strict 表示必须指定至少一个静态分区,nonstrict 表示可以完全动态分区。

    • 示例:SET hive.exec.dynamic.partition.mode = nonstrict;


1.2 聚合和倾斜优化参数

  • hive.map.aggr:

    • 默认值:true

    • 作用:是否在 Map 阶段进行聚合。

    • 示例:SET hive.map.aggr = true;

  • hive.groupby.skewindata:

    • 默认值:false

    • 作用:是否启用数据倾斜优化。

    • 示例:SET hive.groupby.skewindata = true;

  • hive.optimize.skewjoin:

    • 默认值:false

    • 作用:是否启用 Skew Join 优化。

    • 示例:SET hive.optimize.skewjoin = true;


1.3 Join 优化参数

  • hive.auto.convert.join:

    • 默认值:true

    • 作用:是否自动将小表转换为 Map Join。

    • 示例:SET hive.auto.convert.join = true;

  • hive.mapjoin.smalltable.filesize:

    • 默认值:25 MB(25000000

    • 作用:小表的大小阈值,超过该值则不转换为 Map Join。

    • 示例:SET hive.mapjoin.smalltable.filesize = 50000000;(50 MB)


2. 资源管理参数

这些参数用于控制 Hive 任务的资源分配。

2.1 内存相关参数

  • hive.auto.convert.join.noconditionaltask.size:

    • 默认值:10 MB(10000000

    • 作用:Map Join 中小表的大小阈值。

    • 示例:SET hive.auto.convert.join.noconditionaltask.size = 20000000;(20 MB)

  • hive.tez.container.size:

    • 默认值:-1(未设置)

    • 作用:设置 Tez 容器的内存大小。

    • 示例:SET hive.tez.container.size = 4096;(4 GB)


2.2 并行度和任务数

  • hive.exec.parallel.thread.number:

    • 默认值:8

    • 作用:并行执行的线程数。

    • 示例:SET hive.exec.parallel.thread.number = 16;

  • hive.tez.grouping.max-size:

    • 默认值:1 GB(1073741824

    • 作用:Tez 任务的最大分组大小。

    • 示例:SET hive.tez.grouping.max-size = 2147483648;(2 GB)


3. 数据存储和压缩参数

这些参数用于控制数据的存储格式和压缩方式。

3.1 存储格式

  • hive.default.fileformat:

    • 默认值:TextFile

    • 作用:设置默认的文件存储格式。

    • 示例:SET hive.default.fileformat = ORC;

  • hive.exec.compress.output:

    • 默认值:false

    • 作用:是否压缩输出数据。

    • 示例:SET hive.exec.compress.output = true;


3.2 压缩参数

  • hive.exec.compress.intermediate:

    • 默认值:false

    • 作用:是否压缩中间数据。

    • 示例:SET hive.exec.compress.intermediate = true;

  • mapreduce.map.output.compress.codec:

    • 默认值:org.apache.hadoop.io.compress.DefaultCodec

    • 作用:设置 Map 输出数据的压缩编解码器。

    • 示例:SET mapreduce.map.output.compress.codec = org.apache.hadoop.io.compress.SnappyCodec;


4. 日志和调试参数

这些参数用于控制日志输出和调试信息。

4.1 日志级别

  • hive.log.level:

    • 默认值:INFO

    • 作用:设置 Hive 的日志级别。

    • 示例:SET hive.log.level = DEBUG;

  • hive.querylog.location:

    • 默认值:/tmp/<user>

    • 作用:设置查询日志的存储位置。

    • 示例:SET hive.querylog.location = /var/log/hive/querylog;


4.2 调试参数

  • hive.debug.localtask:

    • 默认值:false

    • 作用:是否启用本地任务调试。

    • 示例:SET hive.debug.localtask = true;


5. 其他常用参数

  • hive.fetch.task.conversion:

    • 默认值:minimal

    • 作用:控制是否将简单查询转换为 Fetch 任务。

    • 示例:SET hive.fetch.task.conversion = more;

  • hive.execution.engine:

    • 默认值:mr(MapReduce)

    • 作用:设置 Hive 的执行引擎。

    • 示例:SET hive.execution.engine = tez;


总结

Hive 提供了丰富的参数来优化查询性能、管理资源和调试任务。常用的参数包括:

  • 查询执行参数 :如 hive.exec.reducers.bytes.per.reducerhive.groupby.skewindata

  • 资源管理参数 :如 hive.tez.container.sizehive.exec.parallel.thread.number

  • 存储和压缩参数 :如 hive.default.fileformathive.exec.compress.output

  • 日志和调试参数 :如 hive.log.levelhive.debug.localtask

根据具体场景合理配置这些参数,可以显著提升 Hive 的性能和效率。

相关推荐
tsyjjOvO15 小时前
SpringMVC 从入门到精通
数据仓库·hive·hadoop
Francek Chen21 小时前
【大数据存储与管理】分布式数据库HBase:05 HBase运行机制
大数据·数据库·hadoop·分布式·hdfs·hbase
zzzzzwbetter21 小时前
Hadoop完全分布式部署-Master的NameNode以及Slaver2的DataNode未启动
大数据·hadoop·分布式
weixin_449310841 天前
ETL转换和数据写入小满OKKICRM的技术细节
数据仓库·php·etl
IvanCodes1 天前
Hive IDE连接及UDF实战
ide·hive·hadoop
yumgpkpm1 天前
华为昇腾910B 开源软件GPUStack的介绍(Cloudera CDH、CDP)
人工智能·hadoop·elasticsearch·flink·kafka·企业微信·big data
lifewange2 天前
Hive数据库
数据库·hive·hadoop
五月天的尾巴3 天前
hive数据库模糊查询表名
hive·查询表名
蓝魔Y3 天前
hive—1.1、执行优化
hive
快乐非自愿3 天前
OpenClaw 生态适配:Hadoop/Hive 技能现状与企业级集成方案
大数据·hive·hadoop·分布式·openclaw