HiveQL

Posted 大数据DL

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HiveQL相关的知识,希望对你有一定的参考价值。

一:数据定义

二:数据操作

三:数据查询


一:数据定义

表创建,hive 表分为内部表和外部表:内部表删除后数据也随着删除, 外部表删除了数据还在。创建内部表:

HiveQL

HiveQL指定到表目录,

其中location指定表的创建位置。注意:

我们可以复制已存在的表结构(仅仅是表结构,不包括数据)创建出一张新表

HiveQL

创建一个同样有数据的表:

create table name as  select * from name

创建外部表:

HiveQL

注意 :外部表要指定 location,因为外部表都是指向有数据目录,当外部表删除的时候并不影响数据,复制一张外部表:

HiveQL

备注:

HiveQL表分区partition 表分区可以加快查询,创建表表分区

HiveQL

HiveQL我们 可以 把 partition当成一个过滤条件。

SELECT * FROM employees默认情况下是非严格模式的,如果有partition你不加where过滤 也可以执行,如果是严格模式 你不加 where 会报错

HiveQL

查看表分区:

HiveQL

查看特定一个分区:

HiveQL

 从本地文件目录加载数据到内部表中例如:

HiveQL

去掉 local:从 hdfs上move 数据; local : copy 本地数据到hive表

外部表同样可以创建分区表例如:

HiveQL

分区表 外部表需要先创建好分区 然后在hdfs拷贝数据到目录下:

HiveQL

表删除语句:

HiveQL

注:对于管理表,表的元数据信息和表内的数据都会被删除,对于内部表,表的元数据信息会被删除,但是表中的数据不会被删除。

表的修改:修改就是针对元数据,大多数修改可以通过ALTER TABLE语句

表重命名:ALTER TABLE name RENAME TO new_name

增加分区:

HiveQL

修改分区:

HiveQL

删除分区:

HiveQL

修改表列:

HiveQL

修改列位置:

HiveQL

可以增加列:

HiveQL

删除列:

HiveQL

hive 也可以修改存储属性:

HiveQL

hive 还可以修改一些分割符等。

二:数据操作

表的数据加载 ,动态分区,数据导出

内部表加载数据 ,因为hive没有行级插入更新和事物,第一种方法只能整个文件copy到 表目录下:

HiveQL

overwrite :覆盖 ;去掉 overwrite :新增。

 第二种方法是通过查询语句插入到新表:

HiveQL

加载数据有三种方法: load, select,hdfs命令。注意 hive的hql 语句可以写成 :from name select * ,注意表要加别名,hive 插入到分区表中的时候可以用动态分区:默认情况下动态分区没有开启,需求我们手动配置开启,例如:

HiveQL

开启动态分区 ,然后按照非严格模式执行 ,非严格模式是可以没有静态分区

注意:如果有静态非区 ,一定在动态分区前面

HiveQL

HiveQL

动态分区例子:它是按照后两位来动态分区的。

HiveQL

单个查询语句中创建表并加载数据:

HiveQL

HiveQL导出数据:有两种方法。第一种用 hdfs 命令,直接拷贝到本地目录

HiveQL

第二种的就是用sql来导出数据

HiveQL


三:数据查询

select * from name 都用过在hive中from name a  select a.*这样写也是对的

查询的时候集合显示与使用:

查询数组

HiveQL

查询Map:

HiveQL

查询 struct:

HiveQL

数组类型使用:

HiveQL

map类型使用:

HiveQL

struct类型使用:

HiveQL

我们可以使用 .* 来匹配列:

HiveQL

hive 的函数 有内置函数 , 数学函数(窗口函数)聚合函数, 表函数。

对于不同的函数我们可以自定义

总结上面的函数可以分三大类:  内置函数 ,数学函数都是一列一个值,聚合函数都是是多列一个值,表函数是一列多个值比如处理集合列。所以我们可以自定义三种函数类型。

hive的 函数 操作符:

HiveQL

数学函数 : 一个列返回一个值例如 round ()

HiveQL

数学函数表:

HiveQL

HiveQLHiveQL

聚合函数:针对的是多列多行求一个值如:

HiveQL

聚合函数的表:   

HiveQL

HiveQL

 表生成函数:一个集合类型生成多行多列例如

HiveQL

HiveQL

表生成函数的表:

HiveQL

LIMIT:hive可以加 limit语句, 但是只能是返回多少条数据,不能像mysql那样做分页查询

HiveQL

列起别名:as或空格 

HiveQL

select嵌套 :只能在 from后面嵌套语句

HiveQL

做条件判断: case when the

HiveQL

避免不必要的 mr程序:最好开启本地模式 例如:

HiveQL

HiveQL

select* from name 是不会走 mr程序的,如果是分区表 ,条件是分区条件也不走 mr程序例如:

    


以上是关于HiveQL的主要内容,如果未能解决你的问题,请参考以下文章