最近看了一遍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 配置
官方文档:
命令 | 含义 |
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 | 自动计算:分区数,文件数量,文件大小, |
搬砖多年终不得要领,遂载源码看之望得真经。