博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hive基本命令解析
阅读量:4090 次
发布时间:2019-05-25

本文共 1643 字,大约阅读时间需要 5 分钟。

1. Hive的分区作用

命令:创建分区

create table t_sz_part(id int, name string)partitioned by (country string)row format delimitedfields terminated by ','

往分区中插入数据:load data local inpath '/home/hadoop/sz.dat' into table t_sz_part partition(country = 'China');

说明:首先,创建分区表的时候,需要通过关键字partitioned by (name string) 声明该表是分区表,并且是按照字段name进行分区的;其次,向分区表导入数据的时候,要通过关键字partition(country='China')显示声明数据要导入到表的哪个分区中。所谓分区,这是将满足某些条件的记录打包,做个记号,在查询时提高效率,相当于按文件夹对文件进行分类,文件夹名可类比分区字段。这个分区字段形式上存在于数据表中,在查询时会显示到客户端上,但并不真正在存储在数据表文件中,是所谓伪列。所以,千万不要以为是对属性表中真正存在的列按照属性值的异同进行分区。比如上面的分区依据的列country并不真正的存在于数据表中,是我们为了方便管理添加的一个伪列,这个列的值也是我们人为规定的,不是从数据表中读取之后根据值的不同将其分区。我们并不能按照某个数据表中真实存在的列,如id来分区。

2. Hive的分桶作用

命令:创建分桶

create table t_bluk(id string, name string)clustered by(id) sort by (id) into 4 buckets;

解析:clustered by(id) 意思是根据id分成4个桶,并且桶内按照id排序。

上述命令执行后,将会在相应的hdfs文件目录下创建四个子目录,如:

可能遇到的问题:当使用命令“insert into t_buck select * from other”时,出现t_buck目录下并没有四个子目录,只有一个子目录,需要如下操作:

① 设置如下变量:

#设置变量,设置分桶为true, 设置reduce数量是分桶的数量个数set hive.enforce.bucketing = true;set mapreduce.job.reduces=4;

② 使用“insert ... select ...”命令向t_buck插入数据才会最终生成四个分区。

额外说明:insert into t_buck select id,name from t_p distribute by (id) sort by (id);

 distribute by (id)指定分区字段; sort by (id) 指定排序字段 

当排序和分桶的字段相同的时候可以使用 distribute by (sno) sort by (sno asc) 或Cluster by(字段)。cluster by等同于分桶+排序(sort)

分区和分桶的区别:分区依据的是伪列,分桶则是相对分区进行更细粒度的划分。分桶将整个数据内容按照某列属性值的hash值进行区分,如要按照name属性分为3个桶,就是对name属性值的hash值对3取摸,按照取模结果对数据分桶。如取模结果为0的数据记录存放到一个文件,取模为1的数据存放到一个文件,取模为2的数据存放到一个文件。与分区不同的是,分区依据的不是真实数据表文件中的列,而是我们指定的伪列,但是分桶是依据数据表中真实的列而不是伪列。所以在指定分区依据的列的时候要指定列的类型,因为在数据表文件中不存在这个列,相当于新建一个列。而分桶依据的是表中已经存在的列,这个列的数据类型显然是已知的,所以不需要指定列的类型。

3. Hive的join操作解析

 稍后补上

转载地址:http://yucii.baihongyu.com/

你可能感兴趣的文章
OpenCV gpu模块样例注释:video_reader.cpp
查看>>
【增强学习在无人驾驶中的应用】
查看>>
《python+opencv实践》四、图像特征提取与描述——29理解图像特征
查看>>
《python+opencv实践》四、图像特征提取与描述——30Harris 角点检测
查看>>
《python+opencv实践》四、图像特征提取与描述——31 Shi-Tomasi 角点检测& 适合于跟踪的图像特征
查看>>
OpenCV meanshift目标跟踪总结
查看>>
人工神经网络——神经元模型介绍
查看>>
人工神经网络——感知器介绍
查看>>
人工神经网络——反向传播算法(BackPropagation)
查看>>
进程的地址空间概述
查看>>
Windows 窗口底层原理
查看>>
一种函数指针的运用
查看>>
Win32程序之进程的原理
查看>>
C++虚函数原理
查看>>
MySQL的索引
查看>>
vim配置c++开发编辑器
查看>>
java socket 编程学习笔记
查看>>
forward(转发)与redirect(重定向)
查看>>
HttpServlet中的service()、doPost()、doGet()方法解析
查看>>
“数学不好,干啥都不行!”骨灰级程序员:其实你们都是瞎努力!
查看>>