Fork me on GitHub

Hive Day06


hive的shell

进入hive的客户端之后的

quit 退出hive的客户端
set key=value 进入hive的客户端之后参数设置的
	key:hive-default.xml  hive-site.xml <name>key</name>
	这种参数设置只对当前的客户端生效
	当前客户端退出,则参数失效
set key 查看指定的参数的值
set -v 打印所有的hive或Hadoop的参数配置
add File [file] 添加文件到hive的classpath下
add jar jarname UDF中 添加jar文件到hive的classpath下
list FILE/files
list jar/jars 查看当前的classpath下的文件或jar包资源
!linux命令, 在hive客户端执行linux命令,只能执行查询相关的命令
dfs [dfs cmd]	在hive的客户端执行hdfs相关的命令
	hadoop fs -ls /  # 1.0的命令
	hdfs dfs -ls /   # 2.0的命令
	hadoop/hdfs 是开启hadoop/hdfs的客户端;而hive也是hdfs的客户端;所以直接从dfs开始;例如 dfs ls / 
query ddl dml操作
source File 在hive的客户端执行执行sql脚本; 
	source sql脚本的位置,执行一个sql脚本

进入hive的客户端之前的


语法结构
hive [-hiveconf x=y]* [<-i filename>]* [<-f filename>|<-e]

说明:
1. -i 从文件初始化 HQL
2. -e 从命令行执行指定 HQL
3. -f 执行HQL脚本
4. -v 输出执行的HQL语句到控制台
5. -p
6. -hiveconf x=y
7. -S 表示以不打印日志的形式执行命令操作

-hiveconf key=value
    在启动hive之前,设置hive的相关参数
    hive -hiveconf hive.exec.mode.local.auto=true
    每次只能初始化一个参数

-i init 从文件初始化hive的相关参数
	一次性在启动hive的时候初始化多个参数
-e hql 不进入hive客户端的情况下,执行hql语句;
	hive -e "show databases;"
	注意:执行查询语句的时候,表明之前一定加上库名的

-f 执行一个hql语句的脚本
	source
	hive -f 

hive的执行过程

接口层
thift server
元数据
驱动层(解释器,编译器,优化器,执行器)

解释器:将hql语句 ---- 语法树 一组操作符构成的

查看hive语句的执行计划

explain  HQL语句  # 查看当前hql语句的执行计划

stage 表示阶段;
第一个阶段是根阶段;
每个阶段都是依赖上一个阶段的;

hql语句最终转换为操作符:

Fetch Operator 数据抓取操作符; hdfs操作
Fileter Operator 过滤操作符
Map join Operator 关联操作符 ; mapreduce操作
Group by Operator 分组操作符

limit -1; 表示没有指定limit,表示全表抓取

hive首先将hql语句转换成一组操作符的树;
操作符是hiv而处理数据的最小单元;
操作符:

  1. 可以是hdfs的读写操作, fetch;

  2. MapReduce任务

几个语句的执行过程

join

mapjoin

大*小
小*小
将其中一个小表放在每一个maptask的节点的缓存中,
在map端;setup中读取缓存中的表,放在map中,key=关联键,value=其他键,map中读取另外一个表进行关联;

reducejoin

map端:key:关联键,value:打标记+其他键;
reduce端:两个表中关联键相同的所有的数据,直接进行关联;

group by的执行过程

select pageid,age,count(1) from pv_users group by pageid,age;
map端:key:pageid,age; value:1;
reduce端:对value求和就可以了;

注意: 当group by和聚合函数一起使用的时候,hive会默认进行优化;
sum,max,min等的时候会现在map端执行combiner

去重(distinct)

将需要去重的字段放在map端的key只能够,这样的话在reduce端就会分到一组,一组中取一个;

map端:key:age,pageid;reduce:其他

https://blog.csdn.net/u010814849/article/details/77649724

posted @ 2019-05-15 17:05  耳_东  阅读(107)  评论(0)    收藏  举报