首页 理论教育 HiveQL常用操作汇总

HiveQL常用操作汇总

时间:2023-06-26 理论教育 版权反馈
【摘要】:Hive常用的HiveQL操作命令主要分为数据定义和数据操作两类。②HiveQL创建外部表命令如下。⑤HiveQL修改分区路径命令如下。alter table usr2 drop if existspartition⑦HiveQL修改列信息命令如下。②HiveQL重建索引主要语法如下。drop index if exists index_name on table table_name;#删除索引5)HiveQL数据导入。下面介绍HiveQL常用的五种数据导入方式:load、Insert、As select、Location和Import。若覆盖hive表已有数据,则需使用关键词overwrite。表5-3新增分区数据表d.通过已有hive表分区数据,批量插入hive表新增分区中。

HiveQL常用操作汇总

(1)Hive数据类型。

1)基本数据类型。

INT类型主要包括TINYINT、SMALLINT、INT和BIGINT等。其中,TINYINT长度为1个字节,SMALLINT长度为2个字节,INT长度为4个字节,BIGINT长度为8个字节。布尔类型BOOLEAN包括TRUE和FALSE两个值;FLOAT类型为单精度浮点型,长度为4个字节;DOUBLE表示双精度浮点类型,长度为8个字节,STRING表示字符串类型。

2)复杂数据类型。

ARRAY表示有序字段类型;MAP表示无序字段类型;STRUCT表示一组命名的字段集合。

(2)常用的HiveQL操作命令。

Hive常用的HiveQL操作命令主要分为数据定义和数据操作两类。数据定义主要包括创建修改和删除数据库、表、视图、函数和索引等;数据操作主要包括数据导入、数据导出和数据查询等。

1)创建、修改和删除数据库。

HiveQL中创建、修改和删除数据库的命令如下。

注意,除dbproperties属性外,数据库的元数据信息都是不可更改的,包括数据库名和数据库所在的目录位置,没有办法删除或重置数据库属性。

2)创建、修改和删除表。

①HiveQL创建内部表命令如下。

②HiveQL创建外部表命令如下。

③HiveQL创建分区表命令如下。

④HiveQL为表增加一个分区命令如下。

⑤HiveQL修改分区路径命令如下。

⑥HiveQL删除分区命令如下。

alter table usr2 drop if exists partition(city="beijing",state="China")

⑦HiveQL修改列信息命令如下。

3)视图和索引的创建、修改和删除。

①HiveQL创建视图主要语法如下。

create view view_name as....;

②HiveQL修改视图主要语法如下。

create view view_name as....;

③HiveQL删除视图主要语法如下。

因为视图是只读的,所以对于视图只允许改变元数据中的tblproperties属性。

drop view if exists view_name;

4)索引的创建、修改和删除。

①HiveQL创建索引主要语法如下。

create index index_name on table table_name(partition_name/column_name)

as'org.apache.hadoop.hive.ql.index.compact.CompactIndexHandler'with

deferred rebuild....;

这里’org.apache.hadoop.hive.ql.index.compact.CompactIndexHandler’是一个索引处理器,即一个实现了索引接口的Java类,另外Hive还有其他的索引实现。

②HiveQL重建索引主要语法如下。

alter index index_name on table table_name partition(...) rebulid;

③HiveQL显示索引主要语法如下。

show formatted index on table_name;

④HiveQL删除索引主要语法如下。

drop index if exists index_name on table table_name; #删除索引

5)HiveQL数据导入。

下面介绍HiveQL常用的五种数据导入方式:load、Insert、As select、Location和Import。

①1load。

load加载linux本地文件或HDFS文件到hive表中,其中HDFS文件load方式是剪切模式,load后HDFS上文件会消失。若覆盖hive表已有数据,则需使用关键词overwrite。命令使用格式如下。

②Insert。

Insert往hive表中插入数据,或依据已有hive表,将查询结果插入目标hive表的分区中。命令insert into以追加数据的方式插入到hive表中,原有数据不会删除;insert overwrite会覆盖hive表中原有分区数据。Insert命令使用格式如下。

a.创建一张分区表,命令使用格式如下。(www.xing528.com)

create table student2(id int,name string)partitioned by(month string)row

format delimited fields terminated by'\t';

b.插入一个分区的数据,命令使用格式如下。

insert into table student2 partition(month='10')values(1,'kevin'),(2,'jay'),(3,

'daniel');

插入结果如表5-2所示。

表5-2 插入一个分区的数据表

c.通过已有hive表分区数据,插入hive表新增分区中。命令使用格式如下。

insert overwrite table student2 partition(month='11')select id,name from

student2 where month='10';

插入结果如表5-3所示。

表5-3 新增分区数据表

d.通过已有hive表分区数据,批量插入hive表新增分区中。命令使用格式如下。

插入结果如表5-4所示。

表5-4 批量插入新增分区数据表

③As select。

As select依据已有hive表的查询结果创建新表,将数据添加到新hive表中。命令格式如下。

create table if not exists student3 as select id,name from student2;

④Location。

若hdfs的某目录下本身有文件,可以通过创建外部表external的方式,指定表生成路径location‘HDFS~path’,这样外部表为虚表,查询其中数据即为HDFS指定目录下文件数据。命令格式如下。

⑤Import。

这种方式可以用sqoop将mysql等关系型数据库中表,导入hive表中;也可以从HDFS中将数据导入hive表。命令使用格式如下。

import table student2 partition(month='201709')from'/user/hive/warehouse/

export/student';

6)HiveQL数据导出。

①Hive表导出到本地文件系统,命令使用格式如下。

insert overwrite local directory'/home/wyp/wyp'select∗from wyp;

注意,Mapreduce完成该HQL命令,因此,将会在本地文件系统的/home/wyp/wyp目录下生成文件000000_0,其中,这里000000_0为文件名。

②Hive表导出到HDFS,命令使用格式如下。

insert overwrite directory'/home/wyp/hdfs'>select∗from wyp;

和导入数据到本地文件系统一样,导出来的数据将会保存在HDFS的/home/wyp/hdfs目录下。注意,此处的导出命令没有关键字“local”。

③将Hive表导出到另一个Hive表,命令使用格式如下。

insert into table test partition(age='25')select id,name,tel from wyp;

7)HiveQL数据查询。

HiveQL数据查询分为基本查询、连接查询和子查询等。连接(join)是将两个表中在共同数据项上相互匹配的那些行合并起来,HiveQL的连接分为内连接、左向外连接、右向外连接、全外连接和半连接5种。

(3)HiveQL实例。

下面我们以词频统计算法为例,来介绍怎么在具体应用中使用Hive。词频统计算法又是最能体现MapReduce思想的算法之一,这里我们可以对比它在MapReduce中的实现,来说明使用Hive后的优势。具体步骤如下。

1)创建input目录,output目录会自动生成。其中input为输入目录,output目录为输出目录。命令如下:

1.cd/usr/local/hadoop

2.mkdir input

2)然后,在input文件夹中创建两个测试文件file1.txt和file2.txt,命令如下。

1.cd/usr/local/hadoop/input

2.echo"hello world">file1.txt

3.echo"hello hadoop">file2.txt

3)HiveQL实现词频统计功能,此时只要编写下面3条语句,HiveQL实现命令如下。

4)执行后,用select语句查看,结果如下。

由上可知,采用Hive实现最大的优势是,对于非程序员,不用学习编写Java MapReduce代码了,只需要用户学习使用HiveQL就可以了,而这对于有SQL基础的用户而言是非常容易的。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈