3- hive语法

1.创建内部表和外部表。

内部表和外部表的区别是,内部表在删除表后,会对表存储所在的数据目录也做删除操作,外部表删除后则不会删除数据所在的目录。

外部表语法:

drop table if exists t_abc_dept;

create external table t_abc_dept

(

dept_id             int    comment '机构id ',

dept_code           string comment '机构代码 ',

dept_name           string comment '机构名称 ',

load_tm             string comment '加载时间 '

)comment '机构表'

row format delimited fields terminated by '\001'

location '/dm/fin_abc/bsl/t_abc_dept';

内部表语法:

drop table if exists t_abc_dept;

create table t_abc_dept

(

dept_id             int    comment '机构id ',

dept_code           string comment '机构代码 ',

dept_name           string comment '机构名称 ',

load_tm             string comment '加载时间 '

)comment '机构表'

row format delimited fields terminated by '\001'

location '/dm/fin_abc/bsl/t_abc_dept';

他们之间的区别是外部表多了external关健字。一般我们在生产上对需要落地存储数据的都创建为外部表,只有中间的计算过程才用内部表。这样的好处是哪天不小心把结果表删除了,也不用太担心,因为数据还在,我们只要重新创建表定义,把位置引用到之前的位置location '/dm/fin_abc/bsl/t_abc_dept'就好了。

2.分区表。

在关系库中分区表是为了把数据量太多了分到多个区进行管理或查询,在HIVE中除了有这个作用,另一个作用是为了数据的方便重算,比如有个表要删除某一天的数据,目前HIVE不支持删除操作,只有覆盖操作,所以我们就得把表建成按日的分区表,重算某天的数据,我们只需要重写某天的分区就行了。语法如下:

drop table if exists t_abc_order;

create table t_abc_order

(

order_id            int    comment '订单id ',

prod_code           string comment '产品代码 ',

load_tm             string comment '加载时间 '

)comment '订单表'

PARTITIONED BY   (hq_month_code string)

row format delimited fields terminated by '\001'

location '/dm/fin_abc/bsl/t_abc_order';

3.数据类型

数据类型

样例

string

'abc'

int

123

double

123.4

date

2019/8/10

array

['apple','orange','mango']

map

'数学':80,'语文':89,'英语':95

以上是比较常用的数据类型,在我们工作中,基本用到这些类型就可以了,其他的大家可以用到的时候再搜索下。

4.窗口函数

目前hive的版本支持的窗口函数都比较多,与oracle支持的一样。SUM(), MIN(),MAX(),AVG(),ROW_NUMBER(), RANK(), DENSE_RANK(),LAG, LEAD, FIRST_VALUE, LAST_VALUE, GROUPING SET, CUBE, ROLL UP。做数据处理和分析都够用了。

更多技术文章请关注公众号BLT328(长按后点识别图中二维码):

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值