最近看了一遍hive的文档,本文是为了记录文档中将来会可用东西,并非最全的《文档》,望谅解

一:Hive 常用命令、命令行参数、变量

 我们在使用hive过程中一般是 hive命令直接起来一个客户端,然后输入命令进行操作。

 但是hive本身是有很多可选命令以及参数可以配置的,如下:

 

命令

含义

exit/quit

退出

set -v

显示所有配置(也可以查看所有的变量)

! [shell]

可以输入shell,进行执行

hive命令依赖shell结果的时候非常有用

set env:USER;

显示变量的值

 

 

hive 启动时,可以跟的参数有

 

命令

含义

--showHeader=false

展示列名

--outputformat

结果的展示 [table/vertical/csv/xmlattr/
/json/tsv2/dsv2]

-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

        查看每一行对应的底层文件存储,分析文件损坏的时候有用,样例

 

hive 查看类型函数 hive查看参数变量_hive

 

BLOCK__OFFSET__INSIDE__FILE

         全局文件位置。对于块压缩文件,它是当前块的文件偏移量,也就是当前块的第一个字节的文件偏移量。

        

hive 查看类型函数 hive查看参数变量_hive_02

 

三: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

自动计算:分区数,文件数量,文件大小,

 

搬砖多年终不得要领,遂载源码看之望得真经。