基于Hologres轻松玩转一站式实时仓库
1. 本实践整体架构说明
场景描述
在阿里云大数据服务中,利用MaxCompute服务进行海量历史推送数据的存储以及查询,同时利用实时计算Flink进行实时广告曝光数据的收集,并同历史数据一起汇聚在阿里云实时交互式查询工具Hologres中,最后利用DataV进行动态展示。
本最佳实践通过一个实际的demo来演示如何建立Maxcompute集群,使用Flink收集实时数据,并利用Hologres进行汇聚查询。
系统架构
相关视频
场景相关视频,请观看基于Hologres轻松玩转一站式实时仓库。
2. 选择实验资源
本实验支持实验资源体验、开通免费试用、个人账户资源三种实验资源方式。
在实验开始前,请您选择其中一种实验资源,单击确认开启实验。
列表,可查看本次实验资源相关信息(例如子用户名称、子用户密码、AK ID、AK Secret、资源中的项目名称等)。云产品资源,资源创建过程需要3~5分钟(视资源不同开通时间有所差异,ACK等资源开通时间较长)。完成实验资源的创建后,在实验室页面左侧导航栏中,单击实验资源体验如果您选择的是
说明:实验环境一旦开始创建则进入计时阶段,建议学员先基本了解实验具体的步骤、目的,真正开始做实验时再进行创建。
,下方卡片会展示本实验支持的试用规格,可以选择你要试用的云产品资源进行开通。您在实验过程中,可以随时用右下角icon唤起试用卡片。开通免费试用如果您选择的是
说明:试用云产品开通在您的个人账号下,并占用您的试用权益。如试用超出免费试用额度,可能会产生一定费用。
阿里云支持试用的产品列表、权益及具体规则说明请参考开发者试用中心。
3. 创建实验资源
本步骤指导您如何创建实时数仓Hologres、实时计算Flink、云原生大数据计算服务MaxCompute和云服务器ECS。
如果您已创建相关资源,请您选择个人账户资源,并跳过本小节,直接进行实验操作即可。
本步骤仅作为参考使用,您可以根据需求自行选择配置。
如果您选择的是开通免费试用,参考以下步骤创建相关资源。
。立即试用在本实验页面下方卡片会展示本实验支持的试用规格,依次选择每个云产品试用规格,单击
创建实时数仓Hologres。
2.1 在实验室页面下方,选择实时数仓Hologres,单击立即试用。
2.2 在实时数仓Hologres试用开通页面,根据页面引导进行开通实时数仓Hologres,其中地域选择华东1(杭州),实例类型选择通用型,专有网络(VPC)和专有网络交换机需要与其他产品资源相同,自定义实例名称,其他配置保持默认即可,单击立即试用。
说明:如若没有专有网络(VPC)和专有网络交换机,请先创建专有网络和专有网络交换机,详情请参见创建专有网络和交换机。
创建对象存储OSS。
3.1 在实验室页面下方,选择对象存储OSS,单击立即试用。
3.2 在对象存储OSS试用开通页面,在确认并了解相关信息后,根据页面提示申请试用。
说明:如果您的对象存储OSS资源抵扣包已使用完毕或无领取资格,开通Flink试用后,将正常收取费用,计费详情请参见OSS按量付费。
3.3 前往对象存储OSS控制台。如果您没有开通过OSS服务,系统会提示您开通OSS服务,请按照页面提示开通OSS服务。
3.4 在左侧导航栏中,单击Bucket列表。
3.5 在Bucket列表页面,单击创建Bucket。
3.6 在创建Bucket页面,根据页面引导进行创建Bucket,其中地域选择华东1(杭州),其他配置保持默认即可,单击确定。
创建实时计算Flink。
4.1 在实验室页面下方,选择实时计算Flink,单击立即试用。
4.2 如果您第一次访问该服务,可能需要进行角色授权。请在弹出的授权请求页面,单击前往RAM进行授权后,单击同意授权,完成自动化角色授权。授权成功后,需返回实时计算Flink开通页面。
4.3 在实时计算Flink开通页面,单击上方提示框中的领取免费的资源抵扣包,领取Flink资源抵扣包。
4.4 在Flink资源抵扣包页面,确认相关信息后,单击确认订单,根据页面提示完成领取。
4.5 在实时计算Flink开通页面,根据页面引导进行开通实时计算Flink,其中地域选择华东1(杭州),根据实际情况勾选资源抵扣包,专有网络(VPC)和专有网络交换机与其他产品资源相同,自定义工作空间名称,勾选SLB服务,OSS存储选择您创建的对象存储OSS的Bucket,勾选监控服务,其他配置保持默认即可。
云原生大数据计算服务MaxCompute。
5.1 在实验室页面下方,选择云原生大数据计算服务MaxCompute,单击立即试用。
5.2 在原生大数据计算服务MaxCompute开通页面,根据页面引导进行开通原生大数据计算服务MaxCompute,其中地域选择华东1(杭州),其他配置保持默认即可,单击立即试用。
5.3 前往MaxCompute控制台。
5.4 在项目管理页面,单击新建项目。
5.5 在新建项目对话框中,根据页面引导进行新建项目,自定义项目名称,其他配置根据您的需求自行选择,单击确定。
云服务器ECS。创建
6.1 在实验室页面下方,选择云服务器ECS,单击立即试用。
6.2 在云服务器ECS试用开通页面,根据页面引导进行开通云服务器ECS,其中地域选择华东1(杭州),操作系统选择CentOS 7.7,其他配置保持默认即可,单击立即试用。
如果您选择的是选择个人账户资源,参考以下步骤创建相关资源。
创建实时数仓Hologres。
1.1 前往实时数仓Hologres控制台。
1.2 在左侧导航栏中,单击实例列表。
1.3 在实例列表页面,单击新增引擎实例。
1.4 在实时数仓Hologres购买页面,根据页面引导进行购买实时数仓Hologres,其中地域选择华东1(杭州),实例类型选择通用型,专有网络(VPC)和专有网络交换机需要与其他产品资源相同,自定义实例名称,其他配置保持默认即可,单击立即购买。
说明:如若没有专有网络(VPC)和专有网络交换机,请先创建专有网络和专有网络交换机,详情请参见创建专有网络和交换机。
创建对象存储OSS。
2.1 前往对象存储OSS控制台。如果您没有开通过OSS服务,系统会提示您开通OSS服务,请按照页面提示开通OSS服务。
2.2 在左侧导航栏中,单击Bucket列表。
2.3 在Bucket列表页面,单击创建Bucket。
2.4 在创建Bucket页面,根据页面引导进行创建Bucket,其中地域选择华东1(杭州),其他配置保持默认即可,单击确定。
创建实时计算Flink。
3.1 前往实时计算Flink控制台。
3.2 在实时计算Flink控制台页面, 单击立即购买。
说明:如果您第一次访问该服务,可能需要进行角色授权。请在弹出的授权请求页面,单击前往RAM进行授权后,单击同意授权,完成自动化角色授权。授权成功后,需返回实时计算Flink购买页面。
3.3 在实时计算Flink购买页面,根据页面引导进行开通实时计算Flink,其中地域选择华东1(杭州),根据实际情况勾选资源抵扣包,专有网络(VPC)和专有网络交换机与其他产品资源相同,自定义工作空间名称,勾选SLB服务,OSS存储选择您创建的对象存储OSS的Bucket,勾选监控服务,其他配置保持默认即可,单击确定订单。
云原生大数据计算服务MaxCompute。
4.1 进入阿里云MaxCompute产品首页,单击立即开通。
说明:如果您已开通云原生大数据计算服务MaxCompute服务,请您忽略此步骤,直接进行新建项目步骤。
4.2 在云原生大数据计算服务MaxCompute购买页面,其中地域选择华东1(杭州),并选中服务协议,单击确认订单并支付。
4.2 在项目管理页面,单击新建项目。
4.3 在新建项目对话框中,根据页面引导进行新建项目,自定义项目名称,其他配置根据您的需求自行选择,单击确定。
云服务器ECS。创建
5.1 前往云服务器ECS控制台。
5.2 在概览页面,我的资源区域,单击创建实例。
5.3 在云服务器ECS购买页面,根据页面引导进行购买云服务器ECS,其中地域选择华东1(杭州),专有网络(VPC)和专有网络交换机与其他产品资源相同,操作系统选择CentOS 7.7,开启公网IP,设置自定义密码,其他配置根据您的需求自行选择。
4. 创建Hologres数据库
本步骤指导您如何登录Hologres控制台,并创建数据库。
。Chromium网页浏览器双击打开远程桌面的
。登录,单击用户密码输入框到子用户密码,并复制粘贴页面左上角的下一步在RAM用户登录框中单击
复制下面Hologres控制台地址,在Chromium浏览器的地址栏中粘贴并访问Hologres控制台。
说明:登录Hologres控制台后弹出错误提示框,请您关闭即可,不影响实验使用。
https://hologram.console.aliyun.com
在Hologres引擎管理页面,切换到资源所在地域。
注意:参考如下图片切换地域到 华北2(北京)。
。实例列表在左侧导航栏中,单击
,进入实例详情页。实例名称页面,找到实验室分配的Hologres资源,单击实例列表在
说明:您可在云产品资源列表中查看实验室分配的Hologres资源。
。数据库管理在实例详情页左侧导航栏,单击
。新增数据库页面,单击右上角DB授权在
说明:如果DB授权页面中的实例名为空,请您刷新页面或重新进入数据库管理。
。确认,本示例为db4demo,然后单击数据库名称对话框中,自定义新增数据库在
。用户授权页面,选择刚刚创建的数据库,单击DB授权在
。新增授权页面,单击用户授权在
。确定,最后单击用户组和被授权账号对话框中,下拉选择新增授权在
配置说明:
选择被授权账号时,选择账号名称格式为labsxxxx@aliyun-inc.com:u-xxxxx的RAM账号(RAM)进行授权。
选择用户组时,选择Developer。
5. 创建Hologres数据库
本步骤指导您如何登录Hologres控制台,并创建数据库。
在Hologres引擎管理页面,切换到资源所在地域华东1(杭州)。
。实例列表在左侧导航栏中,单击
,进入实例详情页。实例名称页面,找到您的的Hologres资源,单击实例列表在
。数据库管理在实例详情页左侧导航栏,单击
。新增数据库页面,单击右上角DB授权在
说明:如果DB授权页面中的实例名为空,请您刷新页面或重新进入数据库管理。
。确认,本示例为db4demo,然后单击数据库名称对话框中,自定义新增数据库在
。用户授权页面,选择刚刚创建的数据库,单击DB授权在
。新增授权页面,单击用户授权在
。确定,最后单击用户组和被授权账号对话框中,下拉选择新增授权在
配置说明:
选择被授权账号时,选择您的阿里云主账号。
选择用户组时,选择Developer。
6. 创建Hologres数据表
。登录实例页面,单击ologres实例详情切换至H
。确认对话框中,单击登陆实例在
。SQL编辑器在HoloWeb页面,单击
图标新建SQL查询。区域,单击Query查询在左侧
。数据库名和实例名窗口中,下拉选择临时Query查询在
配置说明:
连接名:选择Hologres实例名。
数据库:选择Hologres中创建的数据库,本示例为db4demo。
。运行将以下代码拷贝到SQL编辑器,然后单击
BEGIN ; DROP TABLE IF EXISTS log_pv; CREATE TABLE IF NOT EXISTS log_pv ( date_time DATE NOT NULL, day_time TEXT , rmid TEXT NOT NULL, rmid_hash TEXT, ver TEXT, publisher_id TEXT, ip TEXT, bc TEXT, camp TEXT, message TEXT ); CALL set_table_property('log_pv', 'distribution_key', 'rmid'); CALL set_table_property('log_pv', 'segment_key', 'date_time'); CALL set_table_property('log_pv', 'clustering_key', 'rmid'); CALL set_table_property('log_pv', 'shard_count', '20'); COMMIT ;
执行成功后会返回执行成功结果,如果未显示下图所示结果请排查并重新执行。
7. 创建flink数据处理作业
复制下方实时计算控制台地址,在浏览器中访问实时计算控制台
https://realtime-compute.console.aliyun.com/console/cell
页面,切换到资源所在地域实时计算控制台在
注意:在当前账号缺少权限对话框中,单击关闭。参考如下图片切换地域到 华北2(北京)。
。控制台列下的操作区域中,找到您的工作空间,单击右侧Flink全托管页面的实时计算控制台在
说明:您可在云产品资源列表中查看到实时计算Flink版的实例ID。
。新建作业,然后单击作业开发在导航栏左侧,单击
。确认选择为流作业/SQL,单击文件类型,例如flink_test,作业名称对话框中,填写新建文件在
将如下SQL拷贝到SQL编辑器,并参考如下说明并修改其中的三个配置项。
CREATE TEMPORARY TABLE randomSource ( date_time DATE, day_time VARCHAR, rmid VARCHAR, rmid_hash VARCHAR, ver VARCHAR, publisher_id VARCHAR, ip VARCHAR, bc VARCHAR, camp VARCHAR, message VARCHAR ) WITH ('connector' = 'datagen'); CREATE TEMPORARY TABLE pv_test ( date_time DATE, day_time VARCHAR, rmid VARCHAR, rmid_hash VARCHAR, ver VARCHAR, publisher_id VARCHAR, ip VARCHAR, bc VARCHAR, camp VARCHAR, message VARCHAR ) WITH ( 'connector' = 'hologres', 'endpoint' = '', 'username' = '', 'password' = '', 'dbname' = 'db4demo', 'tablename' = 'log_pv' ); BEGIN STATEMENT SET; INSERT INTO pv_test SELECT CAST ('2019-04-22' as DATE), '12:00:00', '000991', '87934707160EC0397EBFE739BB0085F7', '0', '6', '175.18.164.59', 'XJIAfnFzxs', 'e1006', 'a' FROM randomSource; INSERT INTO pv_test SELECT CAST ('2019-04-22' as DATE), '12:00:00', '001229', '87934707160EC0397EBFE739BB0085F7', '0', '6', '175.18.164.59', 'XJIAfmhLiq', 'e101', 'c' FROM randomSource; END;
配置说明:
username:子账号的AccessKey ID(如下方图一)。
password:子账号的AccessKey Secret(如下方图一)。
endpoint:Hologres实例的VPC地址,该地址可以在Hologres的实例配置中找到(如下方图二)。
图一:
图二:
创建并配置Session集群。
7.1 在左侧导航栏点击Session集群,然后单击创建Session集群。
7.2 在创建Session集群页面,参考如下说明进行配置,然后单击创建Session集群。
配置说明:
栏,自定义填写集群名称,例如qpflink。名称在
。RUNNING将状态调整为
开关。设置为SQL Previews集群 开启
7.3 等待Session集群状态为 运行中后,去作业开发执行SQL作业。
。执行页面,单击调试数据配置。在执行。在作业开发页面,单击右上角作业开发在左侧导航栏中,单击
。上线页面,单击作业开发执行完毕后,在
立即启动SQL作业。
10.1 在作业开发页面,单击运维。
10.2 在作业运维页面,单击启动。
10.3 在作业启动配置对话框,单击确认启动。
,即可看到作业运行的结果。数据预览,最后单击log_pv,然后双击元数据管理在Hologres管理控制台的HoloWeb页面,单击
8. 创建flink数据处理作业
。实时计算Flink控制台前往
页面,切换到资源所在地域华东1(杭州)。实时计算控制台在
。控制台列下的操作区域中,找到您创建的工作空间,单击右侧Flink全托管页面的实时计算控制台在
。新建作业,然后单击作业开发在导航栏左侧,单击
。确认选择为流作业/SQL,单击文件类型,例如flink_test,作业名称对话框中,填写新建文件在
将如下SQL拷贝到SQL编辑器,并参考如下说明并修改其中的三个配置项。
CREATE TEMPORARY TABLE randomSource ( date_time DATE, day_time VARCHAR, rmid VARCHAR, rmid_hash VARCHAR, ver VARCHAR, publisher_id VARCHAR, ip VARCHAR, bc VARCHAR, camp VARCHAR, message VARCHAR ) WITH ('connector' = 'datagen'); CREATE TEMPORARY TABLE pv_test ( date_time DATE, day_time VARCHAR, rmid VARCHAR, rmid_hash VARCHAR, ver VARCHAR, publisher_id VARCHAR, ip VARCHAR, bc VARCHAR, camp VARCHAR, message VARCHAR ) WITH ( 'connector' = 'hologres', 'endpoint' = '', 'username' = '', 'password' = '', 'dbname' = 'db4demo', 'tablename' = 'log_pv' ); BEGIN STATEMENT SET; INSERT INTO pv_test SELECT CAST ('2019-04-22' as DATE), '12:00:00', '000991', '87934707160EC0397EBFE739BB0085F7', '0', '6', '175.18.164.59', 'XJIAfnFzxs', 'e1006', 'a' FROM randomSource; INSERT INTO pv_test SELECT CAST ('2019-04-22' as DATE), '12:00:00', '001229', '87934707160EC0397EBFE739BB0085F7', '0', '6', '175.18.164.59', 'XJIAfmhLiq', 'e101', 'c' FROM randomSource; END;
配置说明:
页面查看您账号的AccessKey ID。(如下方图一)。安全信息管理username:请在
页面查看您账号的AccessKey Secret。(如下方图一)。安全信息管理password:请在
endpoint:Hologres实例的VPC地址,该地址可以在Hologres的实例配置中找到(如下方图二)。
图一:
图二:
创建并配置Session集群。
7.1 在左侧导航栏点击Session集群,然后单击创建Session集群。
7.2 在创建Session集群页面,参考如下说明进行配置,然后单击创建Session集群。
配置说明:
栏,自定义填写集群名称,例如qpflink。名称在
。RUNNING将状态调整为
开关。设置为SQL Previews集群 开启
7.3 等待Session集群状态为 运行中后,去作业开发执行SQL作业。
。执行页面,单击调试数据配置。在执行。在作业开发页面,单击右上角作业开发在左侧导航栏中,单击
。上线页面,单击作业开发执行完毕后,在
立即启动SQL作业。
10.1 在作业开发页面,单击运维。
10.2 在作业运维页面,单击启动。
10.3 在作业启动配置对话框,单击确认启动。
,即可看到作业运行的结果。数据预览,最后单击log_pv,然后双击元数据管理在Hologres管理控制台的HoloWeb页面,单击
9. 安装MaxCompute客户端(odpscmd)
本步骤指导您如何在云服务器ECS上安装MaxCompute客户端odpscmd。
连接ECS并安装Java环境。
1.1 在实验室页面,单击右侧的图标,切换到Web Terminal操作界面。即可连接至ECS服务器
1.2 在Web Terminal操作界面,执行如下命令,安装openjdk及unzip工具
yum install -y java-1.8.0-openjdk.x86_64 unzip
安装MaxCompute客户端odpscmd
2.1 在Web Terminal操作界面,执行如下命令,下载odpscmd安装包。
wget https://odps-repo.oss-cn-hangzhou.aliyuncs.com/odpscmd/latest/odpscmd_public.zip
2.2 执行如下命令,解压下载的安装文件,得到bin、conf、lib、plugins四个文件夹。
unzip odpscmd_public.zip
2.3 执行如下命令,用vim编辑当前conf文件夹中的odps_config.ini文件,对客户端进行配置。
vim conf/odps_config.ini
2.4 按i键进入编辑模式,参考如下信息修改配置文件。
配置说明:
project_name:填写MaxCompute项目名称。您可在远程桌面里打开如下地址进行查看,也可在云产品资源列表中查看。
https://workbench.data.aliyun.com/console?#/MCEngines
AK与SK:填写实验所提供的AK、SK信息(同创建flink作业时填写的AK、SK)。
http://service.cn-beijing.maxcompute.aliyun.com/api。end_point:填写
2.5 修改完成后编辑按ESC,输入:wq保存退出vim配置。
执行如下命令,测试并运行odpscmd。
./bin/odpscmd
如果看到如下界面,表示配置并运行成功。然后输入如下命令退出odpscmd。
quit;
10. 安装MaxCompute客户端(odpscmd)
本步骤指导您如何在云服务器ECS上安装MaxCompute客户端odpscmd。
连接ECS并安装Java环境。
1.1 在实验室页面左侧,单击图标,切换至Web Terminal,连接云服务器ECS。
如您选择的是试用资源/个人资源,需输入ECS登录的用户名和密码进行登录。
1.2 在Web Terminal操作界面,执行如下命令,安装openjdk及unzip工具
yum install -y java-1.8.0-openjdk.x86_64 unzip
安装MaxCompute客户端odpscmd
2.1 在Web Terminal操作界面,执行如下命令,下载odpscmd安装包。
wget https://odps-repo.oss-cn-hangzhou.aliyuncs.com/odpscmd/latest/odpscmd_public.zip
2.2 执行如下命令,解压下载的安装文件,得到bin、conf、lib、plugins四个文件夹。
unzip odpscmd_public.zip
2.3 执行如下命令,用vim编辑当前conf文件夹中的odps_config.ini文件,对客户端进行配置。
vim conf/odps_config.ini
2.4 按i键进入编辑模式,参考如下信息修改配置文件。
配置说明:
project_name:填写MaxCompute项目名称。您可在本机浏览器中打开如下地址进行查看。
https://workbench.data.aliyun.com/console?#/MCEngines
AK与SK:填写阿里云主账号的AK、SK信息(跟创建flink作业时填写的AK、SK相同)。
http://service.cn-beijing.maxcompute.aliyun.com/api。end_point:填写
2.5 修改完成后编辑按ESC,输入:wq保存退出vim配置。
执行如下命令,测试并运行odpscmd。
./bin/odpscmd
如果看到如下界面,表示配置并运行成功。然后输入如下命令退出odpscmd。
quit;
11. 向MaxCompute中导入数据
准备原始数据。
在Web Terminal操作界面,执行如下命令下载并解压原始数据
wget https://labfileapp.oss-cn-hangzhou.aliyuncs.com/176.zip unzip 176.zip unzip 176/push_354.zip
执行odpscmd。
2.1 执行如下命令,启动odpscmd.
./bin/odpscmd
2.2 在odpscmd中执行如下命令,打开MaxCompute 2.0数据类型。
set odps.sql.type.system.odps2=true;
2.3 执行如下code语句,创建push_data表。
CREATE TABLE IF NOT EXISTS push_data(raw VARCHAR(2000));
2.4 执行如下code语句,进行原始数据导入。
tunnel upload /root/push_354 push_data -fd='\u0001';
2.5 执行如下code语句,创建log_push_raw表。
CREATE TABLE IF NOT EXISTS log_push_raw ( DATE_time DATE, hour VARCHAR(10) NOT NULL, rmid VARCHAR(80), rmid_hash VARCHAR(32), ver VARCHAR(10), publisher_id VARCHAR(10), ip VARCHAR(20), bc_c VARCHAR(20), c_bc VARCHAR(20), message VARCHAR(1500) ) PARTITIONED BY (pure_DATE int); ALTER TABLE log_push_raw ADD PARTITION (pure_DATE='20190422');
2.6 执行如下code语句,对原始数据进行清洗,导入临时表log_push_raw中。
INSERT OVERWRITE TABLE log_push_raw PARTITION (pure_DATE=20190422) SELECT cast( a[1] as DATE ), nvl(a[2],'N/A'), nvl(a[3],'N/A'), nvl(a[4],'N/A'), nvl(a[5],'N/A'), nvl(a[6],'N/A'), nvl(a[7],'N/A'), nvl(a[8],'N/A'), nvl(a[9],'N/A'), nvl(a[10],'N/A') FROM ( SELECT split(concat(SUBSTRING_INDEX(SUBSTRING_INDEX(REGEXP_REPLACE(raw,'\\s+','/'),"{",1),'/',10),"/",REGEXP_SUBSTR(raw, "\{.*\}")),"/") FROM push_data ) as dt(a);
2.7 执行如下code语句,创建用于存储最终清洗后的数据的数据表log_push。
CREATE TABLE IF NOT EXISTS log_push ( DATE_time DATE, hour VARCHAR(10), rmid VARCHAR(10), rmid_hash VARCHAR(10), ver VARCHAR(10), publisher_id VARCHAR(10), ip VARCHAR(10), bc_c VARCHAR(10), c_bc VARCHAR(10), error VARCHAR(10), rmip VARCHAR(10), r_x VARCHAR(10), reqId VARCHAR(10), site_channelid VARCHAR(10), ad_type VARCHAR(10), app_id VARCHAR(10), app_name1 VARCHAR(10), app_name VARCHAR(10), app_ver VARCHAR(10), tag_id VARCHAR(10), cid VARCHAR(10), mdid VARCHAR(10), meid VARCHAR(10), os VARCHAR(10), device_make VARCHAR(10), blTime VARCHAR(10), user_yearsold VARCHAR(10), user_gender VARCHAR(10), device_connectiontype VARCHAR(10), device_type VARCHAR(10), mtype VARCHAR(10), iswifi VARCHAR(10), muid VARCHAR(10), plat VARCHAR(10), rtpd VARCHAR(10), s_cachedata VARCHAR(10), chaoliang1 VARCHAR(10), cmrd VARCHAR(10), device_model VARCHAR(10) ) PARTITIONED BY ( pure_DATE INT ); ALTER TABLE log_push ADD PARTITION (pure_DATE=20190422);
2.8 执行如下code语句,插入用户数据。
INSERT INTO TABLE log_push PARTITION (pure_DATE=20190422) SELECT DATE_time,hour,rmid,rmid_hash,ver,publisher_id,ip,bc_c,c_bc, get_json_object(message,'$.err') as error, get_json_object(message,'$.rmip') as rmip, get_json_object(message,'$.r_x') as r_x, get_json_object(message,'$.reqId') as reqId, get_json_object(message,'$.site_channelid') as site_channelid, get_json_object(message,'$.ad_type') as ad_type, get_json_object(message,'$.app_id') as app_id, get_json_object(message,'$.app_name1') as app_name1, get_json_object(message,'$.app_name') as app_name, get_json_object(message,'$.app_ver') as app_ver, get_json_object(message,'$.tag') as tag_id, get_json_object(message,'$.cid') as cid, get_json_object(message,'$.mdid') as mdid, get_json_object(message,'$.meid') as meid, get_json_object(message,'$.os') as os, get_json_object(message,'$.device_make') as device_make, get_json_object(message,'$.blTime') as blTime, get_json_object(message,'$.user_yearsold') as user_yearsold, get_json_object(message,'$.user_gender') as user_gender, get_json_object(message,'$.device_connectiontype') as device_connectiontype, get_json_object(message,'$.device_type') as device_type, get_json_object(message,'$.mtype') as mtype, get_json_object(message,'$.iswifi') as iswifi, get_json_object(message,'$.muid') as muid, get_json_object(message,'$.plat') as plat, get_json_object(message,'$.rtpd') as rtpd, get_json_object(message,'$.s_cachedata') as s_cachedata, get_json_object(message,'$.chaoliang1') as chaoliang1, get_json_object(message,'$.cmrd') as cmrd, get_json_object(message,'$.device_model') as device_model FROM log_push_raw WHERE pure_DATE=20190422;
12. 将log_push数据聚合在Hologres中
图标,切换到远程桌面。在实验室页面右侧,单击
在HoloWeb页面顶部菜单栏,单击元数据管理 > MaxCompute加速 > 创建外部表。
在新建外部表页面,参考如下说明进行配置,然后单击提交。
参数说明:
模式:选择public。
表名:输入push_history。
查看。https://workbench.data.aliyun.com/console?#/MCEngines表:输入projectname.log_push。其中projectname项目名称请使用实验提供的子账号在MaxCompute项目管理页面
查询Flink和MaxCompute数据推送匹配效果。
4.1在HoloWeb页面顶部菜单栏,单击SQL编辑器。
4.2 在临时SQL查询编辑器中,输入以下code语句,然后单击运行,系统会收集外表的统计信息。
ANALYZE public.push_history;
4.3 在临时SQL查询编辑器中,输入以下code语句,然后单击运行。您就可以查询到Flink在实时收集曝光数据的情况下,存在于MaxCompute中的历史推送数据进行匹配,查看推送的效果了。
SELECT a.rmid ,COUNT(*) ,b.os FROM log_pv AS a JOIN push_history AS b ON a.rmid = b.rmid GROUP BY a.rmid ,b.os;
13. 将log_push数据聚合在Hologres中
切换至HoloWeb页签。在HoloWeb页面顶部菜单栏,单击元数据管理 > MaxCompute加速 > 创建外部表。
在新建外部表页面,参考如下说明进行配置,然后单击提交。
参数说明:
模式:选择public。
表名:输入push_history。
查看。https://workbench.data.aliyun.com/console?#/MCEngines表:输入projectname.log_push。其中projectname项目名称请在MaxCompute项目管理页面
查询Flink和MaxCompute数据推送匹配效果。
4.1在HoloWeb页面顶部菜单栏,单击SQL编辑器。
4.2 在临时SQL查询编辑器中,输入以下code语句,然后单击运行,系统会收集外表的统计信息。
ANALYZE public.push_history;
4.3 在临时SQL查询编辑器中,输入以下code语句,然后单击运行。您就可以查询到Flink在实时收集曝光数据的情况下,存在于MaxCompute中的历史推送数据进行匹配,查看推送的效果了。
SELECT a.rmid ,COUNT(*) ,b.os FROM log_pv AS a JOIN push_history AS b ON a.rmid = b.rmid GROUP BY a.rmid ,b.os;
14. (选做)创建可视化大屏项目
本实验不提供DatatV数据可视化产品,如需使用,请使用您的阿里云账号自行购买该产品或体验DataV产品试用机会。
1. 使用您自己的的阿里云账号在本机浏览器直接访问https://datav.aliyun.com/trial/。
2. 勾选同意使用协议,然后点击立刻开通,即可试用dataV。
说明:当前DataV针对新用户有免费试用机会,如果您没有试用机会,可忽略创建可视化大屏项目步骤或自行购买该产品。
3. 在DataV中添加数据源。
a. 点击右上角 产品控制台。
b.在我的数据页面中,单击添加数据。
c.参考以下填写数据源信息,然后单击确定。
类型:交互式分析 Hologres。
名称:例如View4Holo。
”)。: 80列下的开关。您在复制公网域名时,需要删除后面的端口号“操作区域中,打开公网右侧网络信息页面的实例详情您需要在Hologres说明:域名:Hologres实例的公网域名(
用户名、密码:当前实验室提供的RAM账号的AK ID、AK Secret。
端口:80。
数据库:单击获取数据列表,下拉选择Hologres数据库。
4. 创建DataV可视页面并展示。
a. 在我的可视化页面,单击PC端创建。
b.选择空白画板,单击创建项目。
c. 在创建数据大屏对话框中,输入数据大屏名称,单击创建。
d. 单击全部资产>图标>柱形图。
e. 单击选中画布中的基本柱状图组件,然后单击右侧数据图标,最后单击配置数据源。
f. 设置数据源。
。数据库数据源类型:选择
选择已有数据源:下拉选择Hologres数据库。
SOL:将以下code语句拷贝到SQL语句框中。
SELECT a.rmid ,COUNT(*) ,b.os FROM log_pv AS a JOIN push_history AS b ON a.rmid = b.rmid GROUP BY a.rmid ,b.os;
g.关闭设置数据源页面,填写字段映射信息,将x和y分别映射为os和count字段。
h.单击配置图标,然后单击柱子颜色,关闭视觉映射
配置完成后,当实时广告的曝光数据命中了推送时,您就可以看到所需要的一些可视化的数据,从而帮助您进行商业决策。
15. (选做)创建可视化大屏项目
本实验不提供DatatV数据可视化产品,如需使用,请使用您的阿里云账号自行购买该产品或体验DataV产品试用机会。
1. 使用您自己的的阿里云账号在本机浏览器直接访问https://datav.aliyun.com/trial/。
2. 勾选同意使用协议,然后点击立刻开通,即可试用dataV。
说明:当前DataV针对新用户有免费试用机会,如果您没有试用机会,可忽略创建可视化大屏项目步骤或自行购买该产品。
3. 在DataV中添加数据源。
a. 点击右上角 产品控制台。
b.在我的数据页面中,单击添加数据。
c.参考以下填写数据源信息,然后单击确定。
类型:交互式分析 Hologres。
名称:例如View4Holo。
域名:Hologres实例的公网域名(说明:您需要在Hologres实例详情页面的网络信息区域中,打开公网右侧操作列下的开关。您在复制公网域名时,需要删除后面的端口号“: 80”)。
用户名、密码:当前阿里云主账号的AK ID、AK Secret。
端口:80。
数据库:单击获取数据列表,下拉选择Hologres数据库。
4. 创建DataV可视页面并展示。
a. 在我的可视化页面,单击PC端创建。
b.选择空白画板,单击创建项目。
c. 在创建数据大屏对话框中,输入数据大屏名称,单击创建。
d. 单击全部资产>图标>柱形图。
e. 单击选中画布中的基本柱状图组件,然后单击右侧数据图标,最后单击配置数据源。
f. 设置数据源。
数据源类型:选择数据库。
选择已有数据源:下拉选择Hologres数据库。
SOL:将以下code语句拷贝到SQL语句框中。
SELECT a.rmid ,COUNT(*) ,b.os FROM log_pv AS a JOIN push_history AS b ON a.rmid = b.rmid GROUP BY a.rmid ,b.os;
g.关闭设置数据源页面,填写字段映射信息,将x和y分别映射为os和count字段。
h.单击配置图标,然后单击柱子颜色,关闭视觉映射
配置完成后,当实时广告的曝光数据命中了推送时,您就可以看到所需要的一些可视化的数据,从而帮助您进行商业决策。
实验链接:https://developer.aliyun.com/adc/scenario/a847f62f4dc74f23a72c7d953516c398