hive表开启lastAccessTime参数

本文介绍了如何在Hive服务的高级配置中添加安全阀参数,通过设置`hive.security.authorization.sqlstd.confwhitelist`和`hive.exec.pre.hooks`,启用`UpdateInputAccessTimeHook$PreExec`预执行钩子,以增强Hive的安全性和功能。重启Hive服务后,这些更改将生效。

1.hive-site.xml 的 Hive 服务高级配置代码段(安全阀)中添加2个参数:

hive.security.authorization.sqlstd.confwhitelist=hive.exec.pre.hooks

hive.exec.pre.hooks=org.apache.hadoop.hive.ql.hooks.UpdateInputAccessTimeHook$PreExec

2.重启hive即可

 

在优化Hive参数配置时,合理的设置可以显著提升查询性能和资源利用率。以下是一些关键的参数设置及其最佳实践。 ### 设置压缩选项以减少数据传输 为了减少MapReduce作业中mapper和reducer之间传输的数据量,可以启用中间数据和最终输出数据的压缩功能。通过压缩中间文件,可以在多个MapReduce作业之间减少I/O负载并提高整体性能[^1]。 - **启用中间数据压缩**:可以通过将`hive.exec.compress.intermediate`属性设置为`true`来启用中间数据的压缩。这通常在`hive-site.xml`配置文件中完成,或者直接在命令行会话中进行设置。 ```xml <property> <name>hive.exec.compress.intermediate</name> <value>true</value> </property> ``` - **选择合适的压缩编解码器**:除了开启压缩外,还需要指定适合当前环境的压缩编解码器。例如,使用Snappy或Gzip等高效算法。这些可以通过如下方式设置: ```sql SET mapreduce.map.output.compress=true; SET mapreduce.output.fileoutputformat.compress=true; SET mapreduce.output.fileoutputformat.compress.codec=org.apache.hadoop.io.compress.SnappyCodec; ``` ### 使用分区与分桶技术 合理地对数据进行分区和分桶有助于进一步优化查询效率。分区允许根据某些列(如日期、地区)将数据分割成更小的部分,而分桶则基于哈希值将数据均匀分布到不同的文件中。 - **创建分区**:对于经常按时间或其他维度筛选的数据集,建议创建分区。这样可以避免全扫描,仅处理相关的分区数据。 ```sql CREATE TABLE sales_data ( order_id INT, customer_name STRING, amount DOUBLE ) PARTITIONED BY (dt STRING); ``` - **实施分桶**:当需要频繁执行JOIN操作时,采用分桶能够有效提高Join效率。首先确定一个或多个用于分桶的字段,然后定义桶的数量。 ```sql CREATE TABLE user_activity ( user_id BIGINT, activity_type STRING ) CLUSTERED BY (user_id) INTO 32 BUCKETS; ``` ### 调整执行引擎相关参数 针对Hive使用的执行引擎(通常是Tez或MapReduce),调整一些关键参数也可以帮助改善性能现。 - **增加并行度**:适当增加任务的并行度可以帮助加快大规模数据处理的速度。这包括调整最大并行任务数以及每个节点上同时运行的任务数量限制。 ```sql SET hive.exec.parallel=true; -- 开启并行执行模式 SET hive.exec.parallel.thread.number=8; -- 设置并行线程数目 ``` - **内存管理**:确保给Mapper和Reducer分配足够的堆内存大小,防止因内存不足导致频繁GC甚至OOM错误。 ```sql SET mapreduce.map.memory.mb=4096; -- 每个Map任务的最大可用内存 SET mapreduce.reduce.memory.mb=8192; -- 每个Reduce任务的最大可用内存 ``` ### 索引的应用 虽然Hive不像传统的关系型数据库那样广泛支持索引,但对于特定类型的查询来说,建立适当的索引仍然能带来性能上的提升。特别是对于那些涉及大量过滤条件且返回少量记录的情况,索引非常有用[^2]。 - **创建索引**:考虑为经常作为WHERE子句条件出现的列创建索引。 ```sql CREATE INDEX idx_customer ON TABLE orders (customer_id) AS 'org.apache.hadoop.hive.ql.index.compact.CompactIndexHandler'; ``` 以上提到的各种参数调整策略应结合具体应用场景灵活应用,并通过实际测试验证效果。此外,持续监控系统指标如CPU利用率、磁盘IO吞吐量等也是发现潜在瓶颈的重要手段之一。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_小海_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值