基于Hologres轻松玩转一站式实时仓库

本文涉及的产品
阿里云百炼推荐规格 ADB PostgreSQL,4核16GB 100GB 1个月
云原生数据仓库AnalyticDB MySQL版,基础版 8ACU 100GB 1个月
简介: 本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。

基于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(杭州),并选中服务协议,单击确认订单并支付。

前往MaxCompute控制台

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控制台前往

在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

相关实践学习
基于Hologres轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
相关文章
|
5月前
|
存储 SQL 搜索推荐
一站式实时数仓Hologres整体能力介绍—2024实时数仓Hologres公开课 01
一站式实时数仓Hologres整体能力介绍—2024实时数仓Hologres公开课 01
|
存储 SQL 关系型数据库
AnalyticDB PostgreSQL构建一站式实时数仓实践
本文介绍通过 AnalyticDB PostgreSQL 版基于实时物化视图,构建流批一体的一站式实时数仓解决方案,实现一套系统、一份数据、一次写入,即可在数仓内完成实时数据源头导入到实时分析全流程。
2164 5
AnalyticDB PostgreSQL构建一站式实时数仓实践
|
SQL 存储 运维
乐元素 X Hologres:一站式高性能游戏运营分析平台
乐元素 X Hologres:一站式高性能游戏运营分析平台
1751 1
乐元素 X Hologres:一站式高性能游戏运营分析平台
|
消息中间件 存储 SQL
阿里云Flink x Hologres:构建企业级一站式实时数仓
阿里云Flink x Hologres:构建企业级一站式实时数仓
3670 0
阿里云Flink x Hologres:构建企业级一站式实时数仓
|
消息中间件 SQL 存储
阿里云实时计算 Flink 版 x Hologres: 构建企业级一站式实时数仓
阿里云 Flink、阿里云 Hologres 构建实时数仓上所具备的核心能力以及二者结合的最佳解决方案。
阿里云实时计算 Flink 版 x Hologres: 构建企业级一站式实时数仓
|
存储 SQL 自然语言处理
DataFunTalk:阿里建设一站式实时数仓的经验分享
本文内容整理于阿里资深技术专家姜伟华在DataFunTalk上的演讲,为大家介绍阿里巴巴基于一站式实时数仓Hologres建设实时数仓的经验和解决方案。
2003 5
DataFunTalk:阿里建设一站式实时数仓的经验分享
|
存储 JSON 城市大脑
阿里云云原生实时数仓升级发布,助力企业快速构建一站式实时数仓
9月14日,阿里云云原生实时数仓升级发布。阿里云计算平台的产品专家分享了实时计算Flink版和Hologres构建企业级一站式实时数仓的核心能力升级及新功能解读。
377 0
阿里云云原生实时数仓升级发布,助力企业快速构建一站式实时数仓
|
分布式计算 运维 数据可视化
阿里专家干货20讲!玩转一站式实时数仓Hologres训练营(限量免费)
Hologres年度发布,训练营实操演练,技能掌握更进一步
阿里专家干货20讲!玩转一站式实时数仓Hologres训练营(限量免费)
|
人工智能 运维 监控
开发者社区精选直播合集(十五)| Hologres系列课程 从零开始,带你玩转一站式实时数仓Hologres
在大数据领域,Hologres一直以其超牛的功能、超高的性能,低成本的运维等优势广受好评,但是随着越来越多的企业开始使用Hologres,大家对Hologres的期待也越来越多: Hologres的功能那么多,应该从哪里开始快速入门? 文档介绍太详细,功能使用的最佳实践究竟是什么? 怎么跟大数据生态产品相结合,发挥出最优的能力? 使用注意事项有哪些?怎么避免误入“坑”?
开发者社区精选直播合集(十五)| Hologres系列课程 从零开始,带你玩转一站式实时数仓Hologres
|
运维 监控 安全
从零开始,带你玩转一站式实时数仓Hologres
本次系列直播课程,将会从零开始带您玩转一站式实时数仓Hologres,让您从入门到精通。
1255 0
从零开始,带你玩转一站式实时数仓Hologres

热门文章

最新文章