Hive(一)命令行参数、变量、虚拟列、配置
一:Hive 常用命令、命令行参数、变量
我们在使用hive过程中一般是 hive命令直接起来一个客户端,然后输入命令进行操作。
但是hive本身是有很多可选命令以及参数可以配置的,如下:
命令 | 含义 |
exit/quit | 退出 |
set -v | 显示所有配置(也可以查看所有的变量) |
! [shell] |
可以输入shell,进行执行 hive命令依赖shell结果的时候非常有用 |
set env:USER; |
显示变量的值 |
hive 启动时,可以跟的参数有
命令 | 含义 |
--showHeader=false | 展示列名 |
--outputformat |
结果的展示 [table/vertical/csv/xmlattr/ |
-e | 执行SQl |
-f | 执行SQL文件 |
-S | 静默模式,打印不必要的日志,spark同样适用 |
我们可以在hive sql中使用系统变量和自定义的变量
hive 变量有四个命名空间:env、system、hiveconf、hivevar。
空间 | 含义 | 变量定义 | 使用样例 |
env | shell环境变量 | a=12 | hive -e "select $a" |
system | java定义的配置属性 |
hive -e "select '${system:user.country}';" 空值 select '${system:user.country}'; 有值 |
|
hiveconf | hive相关的配置属性,hive的配置 | set mapred.reduce.tasks.reduce=1 | |
hivevar | 用户自定义变量 |
hive --hivevar datetime="201809" hive -d my="201809" |
select ${datetime} select ${my}; |
二:hive 虚拟列
INPUT__FILE__NAME
查看每一行对应的底层文件存储,分析文件损坏的时候有用,样例
BLOCK__OFFSET__INSIDE__FILE
全局文件位置。对于块压缩文件,它是当前块的文件偏移量,也就是当前块的第一个字节的文件偏移量。
三:hive 配置
官方文档:
https://cwiki.apache.org/confluence/display/Hive/Configuration+Properties#ConfigurationProperties-HiveConfigurationProperties
命令 | 含义 |
mapred.reduce.tasks reduce hive.exec.reducers.bytes.per.reducer |
reduce默认个数 根据输入文件计算reducer个数 |
hive.map.aggr | 是否map端聚合 |
hive.groupby.skewindata | 数据偏移是否优化 |
hive.join.emit.interval | 最右边的hive应该缓冲多少行数据 |
hive.optimize.index.filter | 是否自动使用索引 |
hive.join.cache.size | 连接表(流表除外)缓存数据行数 |
hive.mapjoin.smalltable.filesize | 小表的大小 |
hive.ignore.mapjoin.hint | 是否忽略hint提示 |
hive.exec.compress.output hive.exec.compress.intermediate |
hive最终的结果是否压缩 中间结果是否压缩 |
hive.exec.parallel hive.exec.parallel.thread.number |
并发执行(union all) 并发的最大个数 |
hive.exec.pre.hooks hive.exec.post.hooks hive.exec.failure.hooks |
执行的sql前执行钩子函数(可以用于血缘图) 执行的sql后执行钩子函数(可以用于血缘图) 执行的sql异常执行钩子函数(可以用于血缘图) |
hive.merge.mapfiles hive.merge.mapredfiles hive.merge.size.per.task hive.merge.smallfiles.avgsize |
map任务结束时 合并小文件 mapreduce任务结束时 合并小文件 作业结束时合并文件的大小 作业结束后文件的最小大小 |
hive.auto.convert.join hive.auto.convert.join.noconditionaltask hive.auto.convert.join.noconditionaltask.size |
是否有common join 转换为mapjoin 多表连接时候 是否将common join 转换为mapjoin 10M |
hive.merge.nway.joins | 将相同条件下的多个链接,合并到同一个连接运算符中 |
hive.mapred.reduce.tasks.speculative.execution | 是否打开推测执行 |
hive.exec.dynamic.partition hive.exec.dynamic.partition.mode=strict |
是否动态分区 至少指定一个分区 |
hive.variable.substitute | 允许变量 |
hive.limit.optimize.limit.file hive.limit.optimize.fetch.max hive.limit.query.max.table.partition |
limit采样的最大文件数 limit最大行数 分区扫描的最大数 |
hive.files.umask.value | 创建文件umask值 |
hive.msck.repair.batch.size | 修复分区的时候 |
hive.stats.autogather=true | 自动计算:分区数,文件数量,文件大小, |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?