hive配置文档

在这里插入代码片

Hive的参数设置方式
1、配置文件 (全局有效)

2、命令行参数(对 hive 启动实例有效)

3、参数声明 (对 hive 的连接 session 有效)

(1)配置文件
Hive 的配置文件包括:

A. 用户自定义配置文件:$HIVE_CONF_DIR/hive-site.xml

B. 默认配置文件:$HIVE_CONF_DIR/hive-default.xml

用户自定义配置会覆盖默认配置。

另外,Hive 也会读入 Hadoop 的配置,因为 Hive 是作为 Hadoop 的客户端启动的,Hive 的配 置会覆盖 Hadoop 的配置。

配置文件的设定对本机启动的所有 Hive 进程都有效。

(2)命令行参数
启动 Hive(客户端或 Server 方式)时,可以在命令行添加-hiveconf param=value 来设定参数,这一设定对本次启动的 session(对于 server 方式启动,则是所有请求的 session)有效。

bin/hive -hiveconf hive.root.logger=INFO,console

(3)参数声明
可以在 HQL 中使用 SET 关键字设定参数

使用动态分区
set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;
并行计算
set hive.exec.parallel=true;
set hive.exec.parallel.thread.number=8;
数据倾斜(map join)
map join 概念:将其中做连接的小表(全量数据)分发到所有 MapTask 端进行 Join,从 而避免了 reduceTask,前提要求是内存足以装下该全量数据

set hive.auto.convert.join=true; //设置 MapJoin 优化自动开启
set hive.mapjoin.smalltable.filesize=25000000 //设置小表不超过多大时开启 mapjoin 优化
适当加大map
set mapreduce.input.fileinputformat.split.maxsize=20000000;
set mapreduce.input.fileinputformat.split.minsize.per.node=10000000;
set mapreduce.input.fileinputformat.split.minsize.per.rack=10000000;
JOIN优化
1). 将大表放后头
Hive假定查询中最后的一个表是大表。它会将其它表缓存起来,然后扫描最后那个表。
因此通常需要将小表放前面,或者标记哪张表是大表:/*streamtable(table_name) */
2). 使用相同的连接键
当对3个或者更多个表进行join连接时,如果每个on子句都使用相同的连接键的话,那么只会产生一个MapReduce job。
3). 尽量尽早地过滤数据
减少每个阶段的数据量,对于分区表要加分区,同时只选择需要使用到的字段。
4). 尽量原子化操作
尽量避免一个SQL包含复杂逻辑,可以使用中间表来完成复杂的逻辑

Limit快速出结果
一般情况下,Limit语句还是需要执行整个查询语句,然后再返回部分结果。
有一个配置属性可以开启,避免这种情况—对数据源进行抽样

hive.limit.optimize.enable=true — 开启对数据源进行采样的功能
hive.limit.row.max.size — 设置最小的采样容量
hive.limit.optimize.limit.file — 设置最大的采样样本数

复制代码

set mapreduce.job.name=${fileName}_0; --作业名称
set mapreduce.job.priorite=NORMAL; --作业优先级
set mapreduce.job.queuename=default; --作业队列

–负载均衡
set hive.map.aggr = true; --是否在map端聚合
set hive.groupby.skewindata=true; --不支持多列剔重
set hive.groupby.mapaggr.checkinterval=100000; --在 Map 端进行聚合操作的条目数目

–压缩设置
set mapred.compress.map.output = true; --对map任务输出进行压缩
set mapred.output.compress = true; --压缩输出
set hive.exec.compress.output = true; --控制hive的查询结果输出是否进行压缩

–中间过程压缩设置
set hive.exec.compress.intermediate=true; --控制hive的查询中间结果是否进行压缩,同上条配置,默认不压缩false;
set hive.intermediate.compression.codec=org.apache.hadoop.io.compress.SnappyCodec;

–输入设置
set hive.input.format = org.apache.hadoop.hive.ql.io.CombineHiveInputFormat; --表示执行前进行小文件合并
set mapred.max.split.size = 256000000; --决定每个map处理的最大的文件大小,单位为B
set mapred.min.split.size.per.node = 256000000; --节点中可以处理的最小的文件大小
set mapred.min.split.size.per.rack = 256000000; --机架中可以处理的最小的文件大小

–输出设置
set hive.merge.mapfiles = true; --合并map端输出的结果
set hive.merge.mapredfiles = true; --合并reduce端输出的结果
set hive.merge.size.per.task = 256000000; --merge job后每个文件的目标大小
set hive.merge.smallfiles.avgsize = 256000000;

–reduce数量
set mapred.reduce.tasks= 300;
set hive.exec.reducers.bytes.per.reducer = 5120000000;

–并行设置
set hive.exec.parallel = true;
set hive.exec.parallel.thread.number = 8;

–内存相关设置
set mapreduce.map.memory.mb=8096;
set mapreduce.reduce.memory.mb=10144;

–开启动态分区功能
set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;
set hive.exec.max.created.files=10000;
set hive.exec.max.dynamic.partitions=10000;
set hive.exec.max.dynamic.partitions.pernode=10000;

–mapjoin设置
set hive.auto.convert.join=true;
set hive.auto.convert.join.noconditionaltask=true;
set hive.auto.convert.join.noconditionaltask.size=10000000;

set hive.mapjoin.smalltable.filesize = 10240000;

– 开启严格模式
set hive.marped.mode=strict;

复制代码

### 正确编辑 Hive 配置文件 `hive-site.xml` 的方法及路径配置教程 #### 一、理解 Hive 配置文件的作用 Hive 使用 `hive-site.xml` 文件来定义其运行时的行为和外部资源的连接方式。此文件包含了诸如数据库连接信息、缓存设置以及其他高级选项的关键属性。如果该文件丢失或未正确配置,可能导致 Hive 功能受限甚至无法正常工作。 --- #### 二、定位 `hive-site.xml` 文件的位置 默认情况下,`hive-site.xml` 文件位于 Hive 安装目录下的 `conf` 子目录中。例如: ```plaintext $HIVE_HOME/conf/hive-site.xml ``` 其中 `$HIVE_HOME` 是指 Hive 的根安装路径。如果不确定具体位置,可以通过以下命令查找: ```bash find / -name "hive-site.xml" 2>/dev/null ``` 如果没有找到该文件,则需要手动创建它。 --- #### 三、创建并编辑 `hive-site.xml` 文件 当 Hive 默认不提供现成的 `hive-site.xml` 文件时,可以根据模板文件进行创建和编辑。 ##### 1. 复制模板文件 在某些发行版中,可能会存在一个名为 `hive-default.xml.template` 的模板文件。可以将其重命名为 `hive-site.xml` 并放置于适当位置: ```bash cp $HIVE_HOME/conf/hive-default.xml.template $HIVE_HOME/conf/hive-site.xml ``` ##### 2. 编辑 `hive-site.xml` 文件 使用任意文本编辑器打开 `hive-site.xml` 文件,并按照 XML 格式添加必要的配置项。以下是常见的配置示例: ###### (1) 数据库连接配置 为了使 Hive 能够存储元数据到关系型数据库(如 MySQL),需要指定 JDBC URL 和驱动程序名称: ```xml <configuration> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://localhost:3306/hive_metastore?createDatabaseIfNotExist=true&useSSL=false</value> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.cj.jdbc.Driver</value> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>hive_user</value> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>password_here</value> </property> </configuration> ``` ###### (2) 设置 Reducer 数量 根据引用内容[^3],可以通过以下属性控制 Reduce 任务的数量: ```xml <property> <name>hive.exec.reducers.bytes.per.reducer</name> <value>256000000</value> <!-- 每个 reducer 处理的数据量 --> </property> <property> <name>mapreduce.job.reduces</name> <value>-1</value> <!-- 自动计算 reducer 数量 --> </property> ``` ###### (3) 启用本地模式 对于小型作业,可以选择启用本地模式以减少分布式开销: ```xml <property> <name>hive.exec.mode.local.auto</name> <value>true</value> </property> <property> <name>hive.exec.mode.local.auto.inputbytes.max</name> <value>100000000</value> <!-- 输入数据小于 100MB 则切换为本地模式 --> </property> ``` --- #### 四、验证配置文件的有效性 完成编辑后,可通过以下步骤验证配置是否生效: ##### 1. 初始化 Metastore 确保 MySQL 已经启动并允许远程访问,然后执行以下命令初始化 Hive 的元数据库: ```bash schematool -dbType mysql -initSchema ``` ##### 2. 测试 Hive CLI 尝试启动 Hive 命令行界面,观察是否有异常日志输出: ```bash hive ``` 如果一切正常,应该能够看到 Hive 提示符 `(hive)`。 --- #### 五、常见问题及其解决办法 1. **找不到 `hive-site.xml` 文件** - 确认 `$HIVE_HOME` 环境变量已正确设置。 - 如果确实不存在该文件,可参照前述方法从模板文件生成。 2. **JDBC 驱动类加载失败** - 确保 MySQL Connector/J JAR 文件已被复制到 Hive 的 `lib` 目录下: ```bash cp /path/to/mysql-connector-java.jar $HIVE_HOME/lib/ ``` 3. **Metastore 初始化失败** - 检查 MySQL 用户权限是否充足。 - 确认 `hive-site.xml` 中的数据库连接字符串无误。 --- ### 结论 通过上述步骤,可以顺利完成 `hive-site.xml` 文件的创建与编辑操作。合理配置这些参数有助于优化 Hive 查询性能并保障系统的稳定性。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值