【hive】(一)基础知识

     准备离开数据分析这个行业了,将这几年积攒的心血整理一下,希望对数据分析行业的小伙伴有一定的帮助。

目录

一、hive和DB2等关系数据库的关系

二、hive视图

视图的概念

视图的使用

三、hive自定义函数

四、hive/beeline的使用

五、hive数据类型

基本数据类型

集合数据类型

六、hive表分类 


一、hive和DB2等关系数据库的关系

        hive中元数据存储在关系型管理系统(RDBMS)中,如DB2,Oracle,MySQL等

        其他的数据都存储在分布式管理系统(HDFS)中

二、hive视图

  • 视图的概念

   和关系型数据库一样,Hive 也提供了视图的功能,不过请注意,Hive 的视图和关系型数据库的视图还是有很大的区别:

  (1)只有逻辑视图,没有物化视图;

  (2)视图只能查询,不能 Load/Insert/Update/Delete 数据;

  (3)视图在创建时候,只是保存了一份元数据,当查询视图的时候,才开始执行视图对应的那些子查询

  • 视图的使用

   ##视图的创建

create view view_cdt as select * from cdt;

   ##视图的查看

show views;

desc view_cdt;-- 查看某个具体视图的信息

   ##视图的使用

select * from view_cdt;

   ##视图的删除

drop view view_cdt;

三、hive自定义函数

UDF(user-defined function)作用于单个数据行,产生一个数据行作为输出。(数学函数,字符串函数)

UDAF(用户定义聚集函数 User- Defined Aggregation Funcation):接收多个输入数据行,并产生一个输出数据行。(count,max)

UDTF(表格生成函数 User-Defined Table Functions):接收一行输入,输出多行(explode)

四、hive/beeline的使用

##hive/beeline后台执行任务

nohup beeline --incremental=true --showHeader=true -f temp.sql >result.txt 2>test.log &

--incremental=true    ##输出增量

--showHeader=true   ##输出标题

五、hive数据类型

基本数据类型

Hive数据类型

Java数据类型

长度

例子

TINYINT

byte

1byte有符号整数

20

SMALINT

short

2byte有符号整数

20

INT

int

4byte有符号整数

20

BIGINT

long

8byte有符号整数

20

BOOLEAN

boolean

布尔类型,true或者false

TRUE  FALSE

FLOAT

float

单精度浮点数

3.14159

DOUBLE

double

双精度浮点数

3.14159

STRING

string

字符系列。可以指定字符集。可以使用单引号或者双引号。

‘now is the time’ “for all good men”

TIMESTAMP

 

时间类型

 

BINARY

 

字节数组

 

集合数据类型

数据类型

描述

语法示例

STRUCT

和c语言中的struct类似,都可以通过“点”符号访问元素内容。例如,如果某个列的数据类型是STRUCT{first STRING, last STRING},那么第1个元素可以通过字段.first来引用。

struct()

MAP

MAP是一组键-值对元组集合,使用数组表示法可以访问数据。例如,如果某个列的数据类型是MAP,其中键->值对是’first’->’John’和’last’->’Doe’,那么可以通过字段名[‘last’]获取最后一个元素

map()

ARRAY

数组是一组具有相同类型和名称的变量的集合。这些变量称为数组的元素,每个数组元素都有一个编号,编号从零开始。例如,数组值为[‘John’, ‘Doe’],那么第2个元素可以通过数组名[1]进行引用。

Array()

 

六、hive表分类

hive表分为内部表和外部表:

内部表(管理表):删除表后数据也一起删除

外部表:删除表后数据仍然会保存

##查询表类型:
desc formatted student2;

##修改内部表student2为外部表:
alter table student2 set tblproperties(‘EXTERNAL’=’TRUE’);

##修改外部表student2为内部表:
alter table student2 set tblproperties('EXTERNAL'='FALSE');
注意:('EXTERNAL'='TRUE')和('EXTERNAL'='FALSE')为固定写法,区分大小写!

##同时添加多个分区
alter table dept_partition add partition(month='201705') partition(month='201704');

##同时删除多个分区
alter table dept_partition drop partition (month='201705'), partition (month='201706');

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值