什么是Wedata
数据开发治理平台 WeData(以下简称 WeData)是位于云端的一站式数据开发治理平台,融合了包含数据集成、数据开发、任务运维的全链路 DataOps 数据开发能力,以及数据地图、数据质量、数据安全等一系列数据治理和运营能力,帮助企业在数据构建和应用的过程中实现数据价值最大化,更多见产品文档:https://cloud.tencent.com/document/product/1267/47990
以下为wedata应用场景图。
如何应用Wedata
通过腾讯云以下三个产品来模拟用户使用Wedata的真实场景。
- MySQL服务器
- EMR
- Wedata
购买产品时需要注意,购买相同的地域、相同的VPC,还需要提前看一下各地域云服务的资源是否充足,以下以上海地区为例。
购买MySQL
数据库购买地址见(https://buy.cloud.tencent.com/cdb?regionId=4)
可以创建一个VPC,其他产品如Wedata、EMR和MySQL都放到这个VPC下。
购买后再次确认配置( 因模拟环境使用,我购买的均为低配版本)。
购买后需要创建数据库
登录并创建数据库(streamdemo)
创建库表方式如下。
建表建库SQL ,注意时间戳为测试当天。
代码语言:javascript复制#建表
DROP TABLE IF EXISTS `streamdemo`.`productinfo`;
DROP TABLE IF EXISTS `streamdemo`.`productorder`;
DROP TABLE IF EXISTS `streamdemo`.`userinfo`;
#订单表
CREATE TABLE IF NOT EXISTS `streamdemo`.`productorder` (
`product_id` int COMMENT "商品ID",
`user_id` int COMMENT "用户ID",
`number` int NULL COMMENT "下单数量",
`create_time` datetime COMMENT "下单时间",
PRIMARY KEY (`product_id`, `user_id`)
);
#商品信息表
CREATE TABLE IF NOT EXISTS `streamdemo`.`productinfo` (
`product_id` int NULL COMMENT "商品ID",
`product_name` varchar(100) NULL COMMENT "商品名称",
`price` float NULL COMMENT "商品价格",
`create_time` datetime NULL COMMENT "上架时间",
`description` varchar(500) NULL COMMENT "商品描述"
);
#用户信息
CREATE TABLE IF NOT EXISTS `streamdemo`.`userinfo` (
`user_id` int NULL COMMENT "用户ID",
`user_name` varchar(100) NULL COMMENT "用户名",
`password` varchar(100) NULL COMMENT "登录密码",
`create_time` datetime NULL COMMENT "创建时间"
);
use streamdemo;
#初始化数据
insert into productorder values(1001, 101, 1, '2023-11-01 15:51:06');
insert into productorder values(1002, 102, 2, '2023-11-01 15:51:06');
insert into productorder values(1003, 103, 3, '2023-11-01 15:51:06');
insert into productorder values(1004, 104, 4, '2023-11-01 15:51:06');
insert into productorder values(1005, 105, 5, '2023-11-31 15:51:06');
insert into productorder values(1006, 106, 6, '2023-11-31 15:51:06');
insert into productorder values(1001, 105, 21, '2023-11-01 15:51:06');
insert into productorder values(1002, 106, 15, '2023-11-01 15:51:06');
insert into productorder values(1003, 104, 12, '2023-11-01 15:51:06');
insert into productorder values(1004, 103, 18, '2023-11-01 15:51:06');
insert into productorder values(1005, 101, 6, '2023-11-01 15:51:06');
insert into productorder values(1006, 102, 9, '2023-11-31 15:51:06');
insert into productorder values(1001, 103, 3, '2023-11-01 15:51:06');
insert into productorder values(1002, 101, 4, '2023-11-01 15:51:06');
insert into productorder values(1003, 102, 18, '2023-11-01 15:51:06');
insert into productorder values(1004, 106, 21, '2023-11-01 15:51:06');
insert into productorder values(1005, 104, 3, '2023-11-31 15:51:06');
insert into productorder values(1006, 105, 8, '2023-11-31 15:51:06');
insert into productinfo values(1001, '商品1', 1, '2023-11-01 15:51:06', '最新商品1');
insert into productinfo values(1002, '商品2', 200, '2023-11-01 15:51:06', '最新商品2');
insert into productinfo values(1003, '商品3', 300, '2023-11-01 15:51:06', '最新商品3');
insert into productinfo values(1004, '商品4', 400, '2023-11-01 15:51:06', '最新商品4');
insert into productinfo values(1005, '商品5', 500, '2023-11-01 15:51:06', '最新商品5');
insert into productinfo values(1006, '商品6', 600, '2023-11-01 15:51:06', '最新商品6');
insert into userinfo values(101, 'user01', 'user01', '2023-11-01 15:51:06');
insert into userinfo values(102, 'user02', 'user02', '2023-11-01 15:51:06');
insert into userinfo values(103, 'user03', 'user03', '2023-11-01 15:51:06');
insert into userinfo values(104, 'user04', 'user04', '2023-11-01 15:51:06');
insert into userinfo values(105, 'user05', 'user05', '2023-11-01 15:51:06');
insert into userinfo values(106, 'user06', 'user06', '2023-11-01 15:51:06');
创建EMR
购买EMR (https://console.cloud.tencent.com/emr)
确认配置点击购买。需要注意:
- 每个地域的资源情况不一,测试期间推荐s5机型,当前相对资源较多(购买时以线上环境为准)
- 如果资源不够或出现异常情况,页面会提示创建不成功,这里服务是不收费的,可以联系腾讯云客服或再次购买来解决。
Wedata
项目配置
首先创建项目
再次进入资源配置,设置好资源组、集成资源等
添加数据源
数据开发
创建hive库表
在新建的 streamdemo_hive 的数据库中,创建名为 productorder_hive、productinfo_hive、userinfo_hive 的三张hive数据表。
使用提供的建表语句,将 productorder_hive 表创建完成。productinfo_hive、userinfo_hive 表的创建方式相同。
代码语言:javascript复制#创建订单表
CREATE TABLE IF NOT EXISTS `streamdemo_hive`.`productorder_hive`
(
`product_id` INT,
`user_id` INT,
`number` INT,
`create_time` STRING
)
#创建商品信息表
CREATE TABLE IF NOT EXISTS `streamdemo_hive`.`productinfo_hive`
(
`product_id` INT,
`product_name` STRING,
`price` FLOAT,
`create_time` STRING,
`description` STRING
)
#创建用户信息表
CREATE TABLE IF NOT EXISTS `streamdemo_hive`.`userinfo_hive`
(
`user_id` INT,
`user_name` STRING,
`password` STRING,
`create_time` STRING
)
新建离线同步,将MYSQL数据同步到HIVE中。
进入编排空间,将数据库资源导入hive
创建hive表
关系映射
最终三张表链接hive,其中666(为spark sql) ,提交运行
代码语言:javascript复制--判断建表
CREATE TABLE IF NOT EXISTS streamdemo_hive.ads_product_agg(
create_date string,
user_name string,
product_name string,
cost FLOAT
) STORED AS ORC;
--覆盖数据
use streamdemo_hive;
insert overwrite table streamdemo_hive.ads_product_agg
select
po.create_date,
pi.product_name,
ui.user_name,
(po.sumnumber * pi.price) as cost
from(
select
create_date,
product_id,
user_id,
sum(number) sumnumber
from(
select
product_id,
user_id,
create_time,
from_unixtime(
unix_timestamp(create_time, 'yyyy-MM-dd HH:mm:ss'),
"yyyy-MM-dd"
) as create_date,
number
from
streamdemo_hive.productorder_hive
where
create_time >= '2023-09-01 00:00:00'
and create_time <= '2023-09-01 23:59:59'
)
group by
create_date,
product_id,
user_id
) po
join (
select
product_id,
product_name,
price
from
streamdemo_hive.productinfo_hive
) pi on po.product_id = pi.product_id
join (
select
user_id,
user_name
from
streamdemo_hive.userinfo_hive
) ui on po.user_id = ui.user_id
运维中心
数据质量
统计金额
代码语言:javascript复制use streamdemo_hive;
select create_date,product_name,user_name,sum(cost) as sumcost from ads_product_agg where create_date >= date_add(CURRENT_DATE(),-6) and create_date<=CURRENT_DATE() group by create_date,product_name,user_name order by sumcost desc