-
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每一步都生成文件,速度会慢,但不会异常