HIVE参数设置是全局的,还是会话级别的,参数存储在哪里?

1. Hive参数的级别和作用范围
Hive参数主要分为以下几个级别:

全局级别(Global Level)
影响整个Hive服务的所有会话
存储在Hive的配置文件中
需要重启Hive服务才能生效

会话级别(Session Level)
仅对当前会话有效
会话结束后设置失效
优先级高于全局设置

查询级别(Query Level)
仅对单个查询有效
在查询语句中通过SET命令指定

2. 参数存储位置
配置文件存储(永久存储)
bash
# 1. hive-site.xml - 主要配置文件
$HIVE_HOME/conf/hive-site.xml

# 2. hive-default.xml - 默认配置模板
$HIVE_HOME/conf/hive-default.xml.template

# 3. Hadoop配置文件
$HADOOP_HOME/etc/hadoop/core-site.xml
$HADOOP_HOME/etc/hadoop/hdfs-site.xml
示例配置文件内容
xml
<!-- hive-site.xml -->
<configuration>
    <property>
        <name>hive.exec.parallel</name>
        <value>true</value>
        <description>是否开启并行执行</description>
    </property>
    <property>
        <name>mapreduce.job.queuename</name>
        <value>default</value>
        <description>MR作业队列</description>
    </property>
</configuration>

3. 参数设置和查看方法
查看当前参数
sql
-- 查看所有参数
SET;
-- 查看特定参数
SET hive.exec.parallel;

-- 查看正则匹配的参数
SET -v | grep "parallel";

#设置会话级别参数
#sql
-- 在Hive CLI或会话中设置(会话级别)
SET hive.exec.parallel = true;
SET mapred.reduce.tasks = 10;
SET hive.exec.compress.output = true;

-- 在查询中临时设置(查询级别)
SET hive.exec.parallel = true;
SELECT COUNT(*) FROM my_table;

#通过命令行设置
bash
# 启动Hive时设置参数
hive --hiveconf hive.exec.parallel=true

# 在beeline中设置
beeline --hiveconf mapred.reduce.tasks=20

4. 参数优先级顺序
从高到低的优先级顺序为:
CLI参数 (--hiveconf)
查询中的SET命令
会话中的SET命令
hive-site.xml配置
hive-default.xml默认值

5. 常用参数示例
性能调优参数
sql
#-- 会话级别设置
SET hive.exec.parallel = true;                    -- 开启并行执行
SET hive.exec.parallel.thread.number = 8;         -- 并行线程数
SET hive.exec.compress.intermediate = true;       -- 中间结果压缩
SET hive.auto.convert.join = true;                -- 自动转换Map Join
SET hive.map.aggr = true;                         -- Map端聚合

#资源管理参数
sql
SET mapreduce.map.memory.mb = 4096;               -- Map任务内存
SET mapreduce.reduce.memory.mb = 8192;            -- Reduce任务内存
SET mapred.reduce.tasks = 20;                     -- Reduce任务数
SET hive.exec.reducers.bytes.per.reducer = 256000000; -- 每个Reducer处理的数据量,2.56亿。

#动态分区参数
sql
SET hive.exec.dynamic.partition = true;           -- 开启动态分区
SET hive.exec.dynamic.partition.mode = nonstrict; -- 非严格模式
SET hive.exec.max.dynamic.partitions = 1000;      -- 最大动态分区数

6. 参数持久化方法
修改配置文件(永久生效)
bash
# 编辑hive-site.xml
vi $HIVE_HOME/conf/hive-site.xml

# 添加或修改配置项
<property>
    <name>hive.exec.parallel</name>
    <value>true</value>
</property>

#使用初始化脚本
bash
# 创建init.sql初始化脚本
echo "SET hive.exec.parallel = true;" > /path/to/init.sql

# 启动时执行初始化脚本
hive -i /path/to/init.sql

7. 最佳实践建议
生产环境:重要参数应在hive-site.xml中配置
临时调试:使用会话级别SET命令
特定查询:在查询前设置查询级别参数
参数验证:修改后使用SET命令验证生效情况
文档记录:记录重要的参数变更和影响
理解Hive参数的作用范围和存储位置,可以帮助您更有效地进行性能调优和故障排查。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值