hive 中各种参数

embedded/2025/3/13 0:43:04/

在 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 的性能和效率。


http://www.ppmy.cn/embedded/172104.html

相关文章

【技术白皮书】内功心法 | 第二部分 | Telnet远程登录的工作原理

远程登录的工作原理 背景介绍远程登录远程登录的服务模式远程登录服务的实现基础远程登录服务的运行模式Telnet服务为什么不被操作系统管理 Telnet协议的原理网络虚终端&#xff08;NVT&#xff09;结束标示NVT的原理NVT屏蔽差异 背景介绍 绝大多数计算机都是运行多用户操作系…

【GPT入门】第10课 FunctionCalling介绍

【GPT入门】第10课 FunctionCalling介绍 1. 大模型的两大缺陷导致需要连接外部世界2. FunctionCalling介绍3. functionCalling的感性认识 1. 大模型的两大缺陷导致需要连接外部世界 大模型存在两大显著缺陷&#xff1a; 一、知识储备存在局限性 一方面&#xff0c;大模型并非全…

Centos 安装docker,docker-compose

如果之前有装过&#xff0c;请先删除。用以下命令 yum remove docker-ce rm -rf /var/lib/docker sudo dnf remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-late…

Android中AIDL和HIDL的区别

在Android中&#xff0c;AIDL&#xff08;Android Interface Definition Language&#xff09; 和 HIDL&#xff08;HAL Interface Definition Language&#xff09; 是两种用于定义跨进程通信接口的语言。AIDL 是 Android 系统最早支持的 IPC&#xff08;进程间通信&#xff0…

RPC服务调用深度解析:从原理到Java实践

一、RPC的核心原理与架构设计 1.1 RPC的本质 RPC&#xff08;Remote Procedure Call&#xff09;是一种分布式系统间通信协议&#xff0c;允许程序像调用本地方法一样调用远程服务。其核心目标是通过位置透明性和协议标准化隐藏网络通信细节。RPC的调用流程可抽象为以下步骤&…

PostgreSQL版本选择

PostgreSQL 的稳定版本选择 PostgreSQL 官方会定期发布新版本&#xff0c;分为当前版本和长期支持&#xff08;LTS&#xff09;版本。选择稳定版本时&#xff0c;通常需要综合以下几点考虑&#xff1a; 1. 官方支持的版本 PostgreSQL 社区目前支持最新的三个主版本&#xff0…

GStreamer —— 2.18、Windows下Qt加载GStreamer库后运行 - “播放教程 6:音频可视化“(附:完整源码)

运行效果 介绍 GStreamer 带有一组将音频转换为视频的元素。他们 可用于科学可视化或为您的音乐增添趣味 player 的本教程展示了&#xff1a; • 如何启用音频可视化 • 如何选择可视化元素 启用音频可视化实际上非常简单。设置相应的标志&#xff0c;当纯音频流为 found&#…

通用人工智能(AGI):定义、挑战与未来展望

文章目录 引言AGI的定义与特征实现AGI的挑战AGI与ASI的区别AGI的潜在影响结语 引言 通用人工智能&#xff08;Artificial General Intelligence, AGI&#xff09;是人工智能领域的终极目标&#xff0c;代表着一种能够执行人类所有智力任务的系统。与当前的任务导向型人工智能&…