hive3 个人笔记

  1. hive3 外部表如果需要同时删除hdfs的文件,需要先
    alter table arch2018.kdm_packages set TBLPROPERTIES('EXTERNAL'='false')
    或者再建表语句加上tblproperties(‘external.table.purge’=‘TRUE’)

    create external table text(id int )
    stored as parquet
    tblproperties('external.table.purge'='TRUE')
    

或者hive配置文件直接把external.table.purge 配置为true

sql 题总结

问: 表a 有三个字段,日期,产品,销量。 现在要统计某一个月某一个产品每一天的销量。是每一天,如果某天这个产品销量为0,则统计销量为0

select date_add('2022-01-01', id) ,name from dim.dim_dmp_business_date_info 
lateral view posexplode(split(space(31),'')) t as id,name
group by  date_add('2022-01-01', id) ,name

利用这段代码生成每一天的日期,然后在于实际统计数据关联即可。

select a.date,b.sale 
from  (select date_add('2022-01-01', id) from dim.dim_dmp_business_date_info 
	lateral view posexplode(split(space(30),'')) t as id,name
	group by  date_add('2022-01-01', id)
	) a
left join 
	(select date,sum(sale) as sale
	 from orders
	 where date between '2022-01-01' and '2022-01-31'
	 and prod  = '图书'
	 group by date
	)b
on a.date = b.date

大表之间关联有时报错 return 1 from

设置参数

set hive.auto.convert.join = false

hive3默认开启mapjoin ,在大表关联是mapjoin会挤爆内存返回内存异常,设置这个参数关闭mapjoin,使sql每一步都生成文件,速度会慢,但不会异常

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值