亚马逊云科技智能湖仓架构实践:利用Amazon Redshift的流式摄取构建实时数仓
Amazon Redshift是一种快速、可扩展、安全且完全托管的云数据仓库,可以帮助用户通过标准SQL语言简单、经济地分析各类数据。相比其他任何云数据仓库,Amazon Redshift可实现高达三倍的性能价格比。数万家客户正在借助Amazon Redshift每天处理EB级别的数据,借此为高性能商业智能(BI)报表、仪表板应用、数据探索和实时分析等分析工作负载提供强大动力。
我们很激动地为Amazon Kinesis Data Streams发布了Amazon Redshift流式摄取功能,借此用户无需事先将数据存储在Amazon Simple Storage Service(Amazon S3)中,即可将Kinesis数据流摄取到云数据仓库中。流式摄取可以帮助用户以极低延迟,在几秒钟内将数百MB数据摄取到Amazon Redshift云数据仓库集群。
本文将介绍如何围绕Amazon Redshift云数据仓库创建Kinesis数据流,生成并加载流式数据,创建物化视图,并查询数据流并对结果进行可视化呈现。此外本文还讲介绍流式摄取的好处和常见用例。
云数据仓库有关流式摄取的需求
很多客户向我们反馈称想要将批处理分析能力进一步拓展为实时分析能力,并以低延迟高吞吐量的方式访问自己存储在数据仓库中的流式数据。此外,还有很多客户希望将实时分析结果与数据仓库中的其他数据源相结合,借此获得更丰富的分析结果。
Amazon Redshift流式摄取的主要用例均具备这样的特征:用于处理不断生成的(流式)数据,并且需要在数据生成后很短的时间(延迟)里处理完成。从IoT设备到系统遥测,从公共事业服务到设备定位,数据来源五花八门。
在流式摄取功能发布前,如果希望从Kinesis Data Steams摄取实时数据,需要将数据暂存至Amazon S3,然后使用COPY命令加载。这通常会产生数分钟的延迟,并且需要在从数据流加载数据的操作之上建立数据管道。但现在,用户已经可以直接从数据流摄取数据。
解决方案概述
Amazon Redshift流式摄取可让用户直接连接到Kinesis Data Streams,彻底消除了通过Amazon S3暂存数据并载入集群所导致的延迟和复杂性。借此,用户可以使用SQL命令连接并访问流式数据,并直接在数据流的基础上创建具体化试图,借此简化数据管道。物化视图亦可包含ELT(提取、加载和转换)管道所需的SQL转换。
定义了物化视图后,即可刷新视图以查询最新流式数据。这意味着我们可以使用SQL对流式数据执行下游处理和转换,并且无需付出额外成本,随后即可使用原有的BI和分析工具进行实时分析。
Amazon Redshift流式摄取会作为数据流的使用者来完成自己的工作,物化视图则可看作所要使用的流式数据的登陆区。刷新物化视图时,Amazon Redshift计算节点会将每个数据分片分配给一个计算切片。每个计算切片会开始处理所分配数据分片中的数据,直到物化视图达到与数据流对等的程度。物化视图的第一次刷新可从数据流的TRIM_HORIZON中获取数据,后续刷新则可从上一次刷新所产生的最后一个SEQUENCE_NUMBER中读取数据,直到其状态与流式数据实现对等。整个流程如下图所示。
在Amazon Redshift中设置流式摄取需要执行两个步骤。首先,我们需要创建一个外部Schema以映射至Kinesis Data Streams,随后需要创建一个物化视图以便从数据流中拉取数据。物化视图必须能够增量维护。
创建Kinesis数据流
首先我们需要创建接收流式数据的Kinesis数据流。
1. 在Amazon Kinesis控制台中选择Data streams。
2. 选择Create data stream。
3. 为Data stream name输入ev_stream_data。
4. 为Capacity mode选择On-demand。
5. 按需提供其他配置以创建数据流。
使用Kinesis Data Generator生成流式数据
我们可以使用Amazon Kinesis Data Generator(KDG)工具和下列模板,以聚合的方式生成JSON格式的数据:
下图展示了KDG控制台中的模板。
加载参考数据
上一个步骤中,我们介绍了如何使用Kinesis Data Generator将聚合数据载入数据流。本节我们需要将与电动汽车充电站相关的参考数据载入到集群。
请从奥斯丁市开放数据门户下载插电式电动汽车充电站网络数据。将数据集中的经纬度数据拆分开,并将其载入到具备如下Schema的表中:
创建物化视图
我们可以使用SQL从数据流中访问自己的数据,并直接在数据流的基础上创建物化视图,借此简化数据管道的搭建。为此请执行如下操作:
1. 创建一个外部Schema,以便将数据从Kinesis Data Streams映射至Amazon Redshift对象:
2. 创建一个Amazon Identity and Access Management(IAM)角色(相关策略请参考流式摄取上手指南)。
随后即可创建用于使用流式数据的物化视图。我们可以选择使用SUPER数据类型来存储JSON格式的有效载荷,或使用Amazon Redshift JSON函数将JSON数据解析为单独的列。本文我们将使用第二种方法,因为Schema已经定义好了。
3. 创建物化视图,使其根据数据流中的UUID值进行分布,并按approximatearrivaltimestamp值排序:
4. 刷新这个物化视图:
REFRESH MATERIALIZED VIEW ev_station_data_extract;
目前的预览版中,物化视图不会自动刷新,因此我们需要在Amazon Redshift中计划一个查询,每分钟刷新一次物化视图。相关说明请参考在Amazon Redshift数据仓库中计划SQL查询。
查询数据流
随后即可查询刷新后的物化视图以查看使用情况统计数据:
结果如下表所示。
connectiontime |
energy_consumed |
#users |
2022-02-27 23:52:07+00 |
72870 |
131 |
2022-02-27 23:52:06+00 |
510892 |
998 |
2022-02-27 23:52:05+00 |
461994 |
934 |
2022-02-27 23:52:04+00 |
540855 |
1064 |
2022-02-27 23:52:03+00 |
494818 |
999 |
2022-02-27 23:52:02+00 |
491586 |
1000 |
2022-02-27 23:52:01+00 |
499261 |
1000 |
2022-02-27 23:52:00+00 |
774286 |
1498 |
2022-02-27 23:51:59+00 |
505428 |
1000 |
2022-02-27 23:51:58+00 |
262413 |
500 |
2022-02-27 23:51:57+00 |
486567 |
1000 |
2022-02-27 23:51:56+00 |
477892 |
995 |
2022-02-27 23:51:55+00 |
591004 |
1173 |
2022-02-27 23:51:54+00 |
422243 |
823 |
2022-02-27 23:51:53+00 |
521112 |
1028 |
2022-02-27 23:51:52+00 |
240679 |
469 |
2022-02-27 23:51:51+00 |
547464 |
1104 |
2022-02-27 23:51:50+00 |
495332 |
993 |
2022-02-27 23:51:49+00 |
444154 |
898 |
2022-02-27 23:51:24+00 |
505007 |
998 |
2022-02-27 23:51:23+00 |
499133 |
999 |
2022-02-27 23:29:14+00 |
497747 |
997 |
2022-02-27 23:29:13+00 |
750031 |
1496 |
接下来,我们可以将物化视图与参考数据联接起来,进而分析过去5分钟里充电站的使用量数据,并按照充电站的类型进行细分:
结果如下表所示。
connectiontime |
energy_consumed |
#users |
category |
2022-02-27 23:55:34+00 |
188887 |
367 |
Workplace |
2022-02-27 23:55:34+00 |
133424 |
261 |
Parking |
2022-02-27 23:55:34+00 |
88446 |
195 |
Multifamily Commercial |
2022-02-27 23:55:34+00 |
41082 |
81 |
Municipal |
2022-02-27 23:55:34+00 |
13415 |
29 |
Education |
2022-02-27 23:55:34+00 |
12917 |
24 |
Healthcare |
2022-02-27 23:55:34+00 |
11147 |
19 |
Retail |
2022-02-27 23:55:34+00 |
8281 |
14 |
Parks and Recreation |
2022-02-27 23:55:34+00 |
5313 |
10 |
Hospitality |
2022-02-27 23:54:45+00 |
146816 |
301 |
Workplace |
2022-02-27 23:54:45+00 |
112381 |
216 |
Parking |
2022-02-27 23:54:45+00 |
75727 |
144 |
Multifamily Commercial |
2022-02-27 23:54:45+00 |
29604 |
55 |
Municipal |
2022-02-27 23:54:45+00 |
13377 |
30 |
Education |
2022-02-27 23:54:45+00 |
12069 |
26 |
Healthcare |
结果的可视化呈现
我们可以使用Amazon QuickSight设置一个简单的可视化呈现。相关说明请参考快速上手指南:使用样本数据创建一个具备单一可视化结果的Amazon QuickSight分析。
我们在QuickSight中创建了一个数据集,借此将物化视图与充电站参考数据联接在一起。
随后创建一个可以显示耗电量以及连接用户随时间变化的仪表板。该仪表板还会按照类别在地图上显示对应的地点。
流式摄取所带来的好处
本节我们将介绍流式摄取所能带来的一些好处。
高吞吐量低延迟
Amazon Redshift能以每秒数GB的速度接收并处理来自Kinesis Data Streams的数据(吞吐量取决于数据流中数据分片的数量以及Amazon Redshift集群配置)。借此我们将能以低延迟高带宽的方式使用流式数据,进而在几秒钟之内从数据中获得见解,不再像以往那样等待数分钟。
如上文所述,Amazon Redshift直接摄取并拉取的方法最大的优势在于延迟更低,通常只需数秒。这与创建流程以使用流式数据,将数据暂存到Amazon S3,随后运行COPY命令将数据载入Amazon Redshift的做法形成了鲜明的对比。由于数据处理过程涉及多个环节,后一种方法往往会产生数分钟的延迟。
设置简单
流式摄取方法可以轻松上手。Amazon Redshift中的所有设置与配置均可使用SQL完成,绝大部分云数据仓库的用户对此已经非常熟悉了。随后,无需管理复杂的管道,即可在几秒钟内获得实时见解。Amazon Redshift和Kinesis Data Streams是完全托管的,用户无需管理基础结构即可运行自己的流式应用程序。
提高生产力
用户无需学习新的技能或语言,即可在Amazon Redshift中使用熟悉的SQL技能针对流失数据进行丰富的分析工作。此外还可以创建其他物化视图,或针对物化视图创建视图,借此直接在Amazon Redshift中使用SQL完成大部分ELT数据管道转换工作。
流式摄取用例
通过对流式数据进行近乎实时的分析,很多用例和垂直行业特定应用将变为可能。下文列举的仅仅是诸多用例中的一部分:
● 改善游戏体验:通过分析来自玩家的实时数据,即可专注于游戏转化率、玩家留存率并优化游戏体验。
● 分析在线广告的点击流用户数据:每个客户在一次会话中平均会访问几十个网站,然而营销人员通常只能分析自己网站的访问数据。我们可以分析数据仓库中摄入的已授权点击流数据,借此评估客户的足迹和行为,并即时为客户投放更有针对性的广告。
● 通过流式POS数据进行实时零售分析:我们可以访问并可视化所有全球销售点(POS)零售交易数据,借此进行实时分析、报表并可视化。
● 提供实时的应用程序洞察力:通过访问并分析来自应用程序日志文件和网络日志的流式数据,开发者和工程师可以围绕问题进行实时排错,打造更优质的产品,并通过警报提醒采取预防性措施。
● 实时分析IoT数据:我们可以将Amazon Redshift流式摄取与Amazon Kinesis服务配合使用来构建实时应用程序,例如设备状态和属性检测,如位置和传感器数据、应用程序监控、欺诈检测、实时仪表板等。我们可以使用Kinesis Data Streams摄取流式数据,使用Amazon Kinesis Data Analytics进行处理,随后使用Kinesis Data Streams以极低的端到端延迟将结果发送给任何数据存储或应用程序。
总结
本文介绍了如何创建Amazon Redshift物化视图,进而使用Amazon Redshift流式摄取功能从Kinesis数据流摄取数据。借助这个全新功能,我们可以轻松构建并维护数据管道,借此以低延迟、高吞吐量的方式摄取并分析流式数据。
流式摄取功能目前为预览版,所有提供了Amazon Redshift服务的亚马逊云科技区域均已可以使用该功能。若要上手使用Amazon Redshift流式摄取,请在您的当前栈上预配一个Amazon Redshift集群,并确认您的集群版本不低于1.0.35480。
亚马逊云科技智能湖仓架构实践:利用Amazon Redshift的流式摄取构建实时数仓相关推荐
- 智能湖仓架构实践:利用 Amazon Redshift 的流式摄取构建实时数仓
Amazon Redshift 是一种快速.可扩展.安全且完全托管的云数据仓库,可以帮助用户通过标准 SQL 语言简单.经济地分析各类数据.相比其他任何云数据仓库,Amazon Redshift 可实 ...
- SK海力士量产采用EUV技术的第四代10纳米级DRAM;捷波朗推出全新降噪耳机;TCL选择亚马逊云科技智能湖仓 | 全球TMT...
新品 SK海力士开始量产采用EUV技术的第四代10纳米级DRAM.SK海力士宣布,已于7月初开始量产适用第四代10纳米级工艺的 8Gigabit(Gb)LPDDR4 移动端DRAM产品.自从10纳米级 ...
- 智能物联变革未来,亚马逊云科技智能物联创新日来袭
今天,在家庭.工厂.油井.医院.汽车和数千个地方,有数以十亿计的互联设备正在推动数字转型,产生大量数据并呈指数级增长.根据Gartner统计,2021年全球智能物联网处于爆发式增长通道,设备数量超过2 ...
- 亚马逊云服务器防火墙,亚马逊云科技中国区上线Web应用程序防火墙Amazon WAF
[TechWeb]6月8日消息,亚马逊云科技宣布通过与光环新网和西云数据的紧密合作,在北京区域和宁夏区域正式上线Amazon WAF,帮助客户保护Web应用以及应用程序接口(API)免遭常见Web漏洞 ...
- 亚马逊云科技上的游戏服务:Lumberyard + Amazon GameLift + Twitch
开发一款世界级的游戏是一个非常困难,耗时和昂贵的过程.现在的游戏玩家要求越来越苛刻,他们希望既可以通过各种不同的终端设备来进行游戏 ,又要求游戏具有社交的功能.由于此类游戏的开发期和推广期都很长,因此 ...
- 亚马逊云科技 Build On-这可能是我离Amazon最近的一次
一. Amazon的服务及印象 1.云服务体验 对于深度学习方向的同学来说,GPU资源是必不可少的,要么你所在的实验室具有雄厚的资金条件,显卡多得随便用:要么你选择一份能够拥有大厂显卡使用权的 ...
- 采访亚马逊云科技顾凡:我们的智能湖仓是架构,而非产品,更非湖仓一体
大数据产业创新服务媒体 --聚焦数据 · 改变商业 本月,亚马逊创始人贝索斯正式宣布卸任CEO一职,将大权交给AWS CEO 安迪·贾西(Andy Jassy),后者用了不到20年时间将AWS打造成全 ...
- 亚马逊云科技Serverless构建的实时数仓解决方案,助力猎豹降低30%成本
也许你也听过这样一句话:"21世纪什么最贵?人才!"当数字经济全面席卷而来,这个问题的答案不可置否地变为了"数据".通过数据分析获取近乎实时的洞察,以驱动业务的 ...
- 激活数字营销新引擎,亚马逊云科技为企业带来数字化营销新体验
随着流量红利逐渐消失,营销触点呈现多元化,消费者决策变得复杂,利用数字化激活新的营销引擎成为破局关键.亚马逊云科技联合合作伙伴,基于智能湖仓打造了4个解决方案领域:一方数据平台.客户数字体验.广告智能 ...
最新文章
- 关于版本控制工具GitHub安装报错
- Java基础看jvm,JAVA基础知识|java虚拟机(JVM)
- 原来这样做运维,就可以不被 KO丨课程推广
- Java集合框架之 Java HashMap 源码解析
- url,html,javascript中的转义字符
- python commands执行不连续_[Python] 利用commands模块执行Linux shell命令
- 公共的数据库访问访问类 SqlHelper.cs
- viper12a电源电路图_VIPER22A VIPER12A工作原理引脚功能应用电路图纸与分析
- YOLO-zht训练-未完待续
- 数据仓库建设之数仓架构
- 右键txt打开html,文件解压不了怎么办 右键菜单中选择解压文件
- C++实现与电脑进行石头剪刀布的游戏
- 未知USB设备(设备描述符请求失败)解决方法之一
- 通过ADVICE来实现按功能进行权限控制
- 计算机总是蓝屏怎么解决办法,笔记本电脑总蓝屏如何解决_笔记本频繁蓝屏怎么办-win7之家...
- 同里古镇百年古建筑深夜被毁
- 【云原生学习】史上最全Prometheus学习笔记
- 愉快复习马克思主义与当代
- MyEclipse开发Struts1实例
- ffmpeg的那点小事儿--ffmpeg的导入和视频解码,YUV保存(ffmpeg4.0.2)
热门文章
- 一篇文章教你理解什么是静态库和动态库
- CVPR 2021 Less is More: CLIP BERT for Video-and-Language Learning via Sparse Sampling
- [MiscCrypto]鹤壁杯部分wp
- 2.7通用串行总线 USB Universal Serial Bus
- 软件测试单元测试80%,单元测试的代码覆盖率至少80%
- vintage、迁移率、滚动率、入催率、FPD概念
- 解析淘宝淘口令获取商品ID/uland链接e参数获取返回商品优惠券方法说明
- python实现温度的转化
- imagick的简单使用
- 公开报名|CCPTP云渗透测试认证专家第二期培训班,将在云网基础设施安全国家工程研究中心举办