本节我们将使用Quicksight来展示电影数据,我们将测试使用SPICE和不使用SPICE的效果
由于Quicksight要访问Redshift里的数据,要把Redshift配置成公网访问:
开启之后,要等待十几分钟Redshift更新完成。再把Redshift的安全组加一条规则,放通0.0.0.0/0
对5439端口的访问。
进入Quicksight服务,点击New dataset
:
选择使用Redshift做为数据源,输入Redshift的帐号和密码后,确认可以连接成功,然后点击Create data source
:
在下一步,选择输入SQL的方式来对数据进行查询。我们输入上一节Spectrum实验时的查询语句:
具体内容如下:
select
title.title,
title.language,
title_basics.primarytitle,
title_basics.startyear,
title_basics.genres,
principles.nconst,
name_basics.primaryname,
name_basics.primaryprofession
from imdb.title
join imdb.title_basics on title.titleid = title_basics.tconst
join spectrum_schema.principles on title.titleid = principles.tconst
join imdb.name_basics on name_basics.nconst = principles.nconst
where title.language = 'en'
and title_basics.startyear is not null
order by title_basics.startyear desc
limit 500;
选择Direct query your data
,这样Quicksight每次会从Redshift里查询数据再进行展示:
点击primaryprofession
,这样报表中会展示它的数量统计:
等待40多秒后,报表加载完成:
查看Redshift的监控,发现这条语句执行了41秒:
转成饼状图展示:
此时会发现又要等待40多秒图形才展示出来
上面的配置,每次展示报表时每次都要在Redshift做计算,每一次展示至少需要十几秒甚至几分钟(对于复杂的查询甚至要十几分钟),这对于前端的使用者体验非常不好;
Super-fase, Parallel, In-memeory, Calculation Engine
- SPICE
是QuickSight
的内存计算引擎,使用SPICE可以将数据加载到内存里,这样会大大加快报表展示的速度:
接下来我们将重新创建一个数据集,使用SPICE来加速Quicksight展示的速度:
数据源依然选择Redshift,连接方式以及SQL查询语句和上面一样:
在最后完成创建的部分,选择Import to SPICE for quicker analytics
:
创建数据源完成后,会有一个初始化的过程,这时Quicksight会从Redshift中读取全量数据,加载到内存中:
此时查看Redshift的监控,会发现有一条unload语句在执行:
等待一段时间后,数据加载完成:
此时对报表进行展示,发现速度大大提升,基本在一秒左右就能展示出来: