数据库创建外表只要解决从DWS访问DLI下的表数据
2021/7/29 19:05:48
本文主要是介绍数据库创建外表只要解决从DWS访问DLI下的表数据,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
HIVE创建外表
drop table if EXISTS akcdw.cici_seller;
--将as的表结构存储在表中,不存储数据
create EXTERNAL table akcdw.cici_seller
--数据存储格式
STORED AS ORC
--数据存储地址,需要在指定'obs://akc-bigdata/akcdw目录下创建,obs是云服务地址相当于云盘符
location 'obs://akc-bigdata/akcdw/cici_seller'
--将下面的查询结果复制到cici_seller表中,数据存到location中
as
------------------------------------------------------------------------------------------------------------------
select a.dt
,a.user_id
,b.user_level
,sum(forward_cnt)live_forward_cnt
,sum(if(c.live_name like '%超级品牌日%' or c.live_name like '%超级爆品%',forward_cnt,0)) super_live_forward_cnt
,sum(if(c.live_name like '%超级品牌日%',forward_cnt,0)) super_brand_live_forward_cnt
,sum(if(c.live_name like '%超级爆品%',forward_cnt,0)) super_boom_live_forward_cnt
from
(
select dt,user_id,forward_activity_id,sum(forward_cnt)forward_cnt
from akcdw.rpt_user_forward_behavior_d
where dt<='20210331' and dt>='20210325'
and forward_content in ('活动','商品')
and user_role='店主'
group by user_id,forward_activity_id,dt
)a
join akdc.dim_live_info c
on a.forward_activity_id=c.live_id
left join akdc.dim_user_info_akucun_app b
on a.user_id=b.user_id
group by b.user_level,a.user_id,dt;
postgresql创建外表
要在指定的空间下创建,akc_dw的dws的10节点的akc_dws下执行创建sql
--删除外表如果存在
drop FOREIGN TABLE if exists cici_seller;
--建立schema
SET search_path = public;
--建立外表
--– 后面options里面参数的说明
--– filename后面是文件名和绝对路径
--– format是格式,csv是逗号分隔,text表示是tab分隔的方式
--– delimiter是分隔符
--– header表示第一行数据是否需要
--– null表示空数据的转化处理,例子中字段1将转化为null
CREATE FOREIGN TABLE cici_seller (
dt character varying,
user_id character varying,
user_level bigint,
live_forward_cnt bigint,
super_live_forward_cnt bigint,
super_brand_live_forward_cnt bigint,
super_boom_live_forward_cnt bigint
)
--key:server value:obs_server,就相当于一个云服务的地址,去云服务的地址拿数据
SERVER obs_server
OPTIONS (
encoding 'utf8',
foldername '/akc-bigdata/akcdw.db/cici_seller/',--这个是DLI里面的文件地址
format 'orc'
)
DISTRIBUTE BY ROUNDROBIN;
如果DLI的文件更新数据了,那么DWS需要创建调度更新下数据
使用DLI定时刷新数据(可选)
此语句就是将建表语句进行了更改,create部分改成了overwrite,保存成脚本,脚本名称与表名一致(方便后续维护),此步骤可选,如果不需要定时更新,可不做此步骤
只要DLI定时写入数据到文件里,那么DWS每次也都是从这个文件里读取新数据
INSERT OVERWRITE table akcdw.cici_seller
-------------------------------------------------------------------
select a.dt
,a.user_id
,b.user_level
,sum(forward_cnt)live_forward_cnt
,sum(if(c.live_name like '%超级品牌日%' or c.live_name like '%超级爆品%',forward_cnt,0)) super_live_forward_cnt
,sum(if(c.live_name like '%超级品牌日%',forward_cnt,0)) super_brand_live_forward_cnt
,sum(if(c.live_name like '%超级爆品%',forward_cnt,0)) super_boom_live_forward_cnt
from
(
select dt,user_id,forward_activity_id,sum(forward_cnt)forward_cnt
from akcdw.rpt_user_forward_behavior_d
where dt<='20210331' and dt>='20210325'
and forward_content in ('活动','商品')
and user_role='店主'
group by user_id,forward_activity_id,dt
)a
join akdc.dim_live_info c
on a.forward_activity_id=c.live_id
left join akdc.dim_user_info_akucun_app b
on a.user_id=b.user_id
group by b.user_level,a.user_id,dt;
建立作业定时调度DLI脚本
新建作业,新建前先新建一个属于自己的文件夹,建在自己的文件夹下,方便查找,也防止别人误删。
作业名命名规范:lighting_<table_name>
作业目录位置:/作业/业务流程/lighting作业
作业创建完毕后,在右侧《节点库》中拖动一个 CDM job节点任务到画布中
作业配置完成后,务必记得保存并提交版本,并且启动调度!
选择DLI SQL节点,点击DLI图标,会显示可以配置这个作业运行的脚本信息
最右侧会有一些可以设置调度信息等设置的地方
这篇关于数据库创建外表只要解决从DWS访问DLI下的表数据的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-20RabbitMQ教程:新手入门指南
- 2024-11-20Redis教程:新手入门指南
- 2024-11-20SaToken教程:新手入门指南
- 2024-11-20SpringBoot教程:从入门到实践
- 2024-11-20Java全栈教程:从入门到实战
- 2024-11-20Java微服务系统教程:入门与实践指南
- 2024-11-20Less教程:初学者快速上手指南
- 2024-11-20MyBatis教程:新手快速入门指南
- 2024-11-20QLExpress教程:初学者快速入门指南
- 2024-11-20订单系统教程:从入门到实践的全面指南