阿里、蚂蚁、晟腾、中科加禾精彩分享 AI 基础设施洞见,现购票可享受 9 折优惠 |AICon 了解详情
写点什么

Amazon Redshift 的新功能 – 数据湖导出和联合查询

  • 2019-12-11
  • 本文字数:3585 字

    阅读完需:约 12 分钟

Amazon Redshift 的新功能 – 数据湖导出和联合查询

数据仓库是经过优化的数据库,可以分析来自事务系统和业务线应用程序的关系数据。Amazon Redshift 是一个快速、完全托管的数据仓库,可帮助使用标准 SQL 和现有商业智能 (BI) 工具的数据分析过程变得简单且经济高效。


要从不适合数据仓库的非结构化数据中获取信息,可以构建一个数据湖。 数据湖是一种集中的存储库,可以存储任何规模的各种结构化和非结构化数据。 借助基于 Amazon Simple Storage Service (S3) 构建的数据湖,您可以轻松运行大数据分析,并使用机器学习来从半结构化(例如 JSON、XML)和非结构化数据集中获得深入见解。


今天,我们将推出两项新功能,以帮助您改善管理数据仓库和与数据湖集成的方式:


  • 数据湖导出Apache Parquet 格式将数据从 Redshift 集群卸载到 S3,这是一种进行了分析优化的高效开放列式存储格式。

  • 联合查询能够查询 Redshift 集群、S3 数据湖以及一个或多个 ****PostgreSQL 和 Amazon Aurora PostgreSQL 数据库的 Amazon Relational Database Service (RDS) 中存储的数据。


该架构图简要概述了这些功能的工作方式以及如何将它们与其他 AWS 服务配合使用。



让我们从如何使用这些功能以及它们提供的优势开始,更好地说明您在图中看到的交互。


使用 Redshift Data Lake 导出


现在,您可以将 Redshift 查询的结果以 Apache Parquet 格式卸载到 S3 数据湖。与文本格式相比,Parquet 格式的卸载速度最多快 2 倍,而 S3 中的存储空间最多减少 6 倍。 这使您可以将 Redshift 中完成的数据转换和扩展保存到开放格式的 S3 数据湖中。


然后,您可以使用 Redshift Spectrum 分析数据湖中的数据,该功能允许您直接从 S3 上的文件中查询数据。或者,您可以使用其他工具,例如 Amazon AthenaAmazon EMRAmazon SageMaker


为了尝试这项新功能,我从 Redshift 控制台创建了一个新集群,并遵循本教程进行操作以加载示例数据,跟踪不同场所音乐时间的销售情况。我想将此数据与存储在我的数据湖中社交媒体对演出的评论相关联。要了解它们的相关性,每个事件都应该有一种将其相对销售额与其他事件进行比较的方法。


让我们在 Redshift 中构建一个查询,以将数据导出到 S3。 我的数据存储在多个表中。我需要创建一个查询,以便获得销售情况的单一视图。我想加入销售额日期表的内容,添加有关演出总销售额的信息(查询中的 total_price),以及相比所有事件,占全时段总销售额的百分比


我使用以下 SQL 命令,将查询结果以 Parquet 格式导出到 S3:


SQL


UNLOAD ('SELECT sales.*, date.*, total_price, percentile           FROM sales, date,                (SELECT eventid, total_price, ntile(1000) over(order by total_price desc) / 10.0 as percentile                   FROM (SELECT eventid, sum(pricepaid) total_price                           FROM sales                       GROUP BY eventid)) as percentile_events          WHERE sales.dateid = date.dateid            AND percentile_events.eventid = sales.eventid')TO 's3://MY-BUCKET/DataLake/Sales/'FORMAT AS PARQUETCREDENTIALS 'aws_iam_role=arn:aws:iam::123412341234:role/myRedshiftRole';
复制代码


我将使用 AWS Identity and Access Management (IAM) 角色,授予 Redshift 对我的 S3 存储桶的写入访问权限。我可以使用 AWS 命令行界面 (CLI) 查看 UNLOAD 命令的结果。如预期的那样,使用 Parquet 列数据格式导出查询输出:


$ aws s3 ls s3://MY-BUCKET/DataLake/Sales/


2019-11-25 14:26:56 1638550 0000_part_00.parquet


2019-11-25 14:26:56 1635489 0001_part_00.parquet


2019-11-25 14:26:56 1624418 0002_part_00.parquet


2019-11-25 14:26:56 1646179 0003_part_00.parquet


为了优化对数据的访问,我可以指定一个或多个分区列,以便将卸载数据自动分区到 S3 存储桶内的文件夹中。例如,我可以卸载按年、月和日分区的销售数据。这使我的查询可以利用分区修剪功能,并跳过扫描不相关的分区,从而提高查询性能和最大程度地降低成本。


要使用分区,我需要在前面的 SQL 命令中添加 PARTITION BY 选项,然后添加将数据分区到不同目录中要使用的列。在本例中,我想根据销售的年份和日历日期(查询中的caldate)对输出进行分区。


SQL


UNLOAD ('SELECT sales.*, date.*, total_price, percentile           FROM sales, date,                (SELECT eventid, total_price, ntile(1000) over(order by total_price desc) / 10.0 as percentile                   FROM (SELECT eventid, sum(pricepaid) total_price                           FROM sales                       GROUP BY eventid)) as percentile_events          WHERE sales.dateid = date.dateid            AND percentile_events.eventid = sales.eventid')TO 's3://MY-BUCKET/DataLake/SalesPartitioned/'FORMAT AS PARQUETPARTITION BY (year, caldate)CREDENTIALS 'aws_iam_role=arn:aws:iam::123412341234:role/myRedshiftRole';
复制代码


这次,查询输出存储在多个分区中。例如,特定年份和日期的文件夹内容如下:


$ aws s3 ls s3://MY-BUCKET/DataLake/SalesPartitioned/**year=2008**/**caldate=2008-07-20**/


2019-11-25 14:36:17 11940 0000_part_00.parquet


2019-11-25 14:36:17 11052 0001_part_00.parquet


2019-11-25 14:36:17 11138 0002_part_00.parquet


2019-11-25 14:36:18 12582 0003_part_00.parquet


另外,我还可以使用 设置一个爬网程序,该爬网程序(按需或按计划)通过在我的 S3 存储桶中查找数据更新 Glue 数据目录。数据目录更新后,我可以使用 Redshift Spectrum、Athena 或 EMR 轻松查询数据。


现在可以在我的数据湖中合并处理销售数据与非结构化和半结构化(JSON、XML、Parquet)数据。例如,我现在可以将 Apache Spark 与 EMR 或任何 Sagemaker 内置算法配合使用,以此访问数据并获得新见解。


**使用 Redshift 联合查询


**现在,您还可以直接从 Redshift 数据仓库访问 RDS 和 Aurora PostgreSQL 存储中的数据。这样,您可以立即访问可用的数据。您现在可以直接在 Redshift 中对数据仓库、事务数据库和数据湖中的数据执行查询处理,而无需 ETL 作业将数据传输到数据仓库。


Redshift 利用其先进的优化功能,将大量计算直接下推,并将其分配到事务数据库中,从而最大限度地减少了通过网络传输的数据量。


使用以下语法,可以将外部模式从 RDS 或 Aurora PostgreSQL 数据库添加到 Redshift 集群:


SQL


CREATE EXTERNAL SCHEMA IF NOT EXISTS online_systemFROM POSTGRESDATABASE 'online_sales_db' SCHEMA 'online_system'URI ‘my-hostname' port 5432IAM_ROLE 'iam-role-arn'SECRET_ARN 'ssm-secret-arn';
复制代码


架构和端口在此处可选。如果未指定,则 Schema 将默认为public,而 PostgreSQL 数据库的默认端口为 5432。Redshift 正在使用 AWS Secrets Manager 来管理连接到外部数据库的凭证。


借助此命令,外部架构式中的所有表格均可用,并且 Redshift 可以使用这些表格对集群中的数据,或使用 Redshift Spectrum 对 S3 数据湖中的数据,执行任何复杂的 SQL 查询处理。


回到我之前使用的销售数据示例,现在我可以将音乐事件的历史数据趋势与实时销售额相关联。通过这种方式,我可以了解事件是否按预期执行,并可以无延迟地调整营销活动。


例如,我在 Redshift 集群中将在线商务数据库定义为 online_system 外部架构,随后,我可以通过以下简单查询比较以前的销售额与在线商务系统中的销售额:


SQL


SELECT eventid,       sum(pricepaid) total_price,       sum(online_pricepaid) online_total_price  FROM sales, online_system.current_sales GROUP BY eventid WHERE eventid = online_eventid;
复制代码


Redshift 不会完全导入数据库或架构目录。运行查询时,它将本地化查询中的 Aurora 和 RDS 表(以及视图)的元数据。然后,使用此类本地化元数据编译查询和生成计划。


**现已推出


**Amazon Redshift 数据湖导出是改善数据处理管道的一种新工具,Redshift发行版 1.0.10480 或更高版本均支持该工具。请参阅 AWS 区域表 以了解 Redshift 可用性,并查看集群的版本。


Amazon Redshift 中新的联合身份验证功能是作为公开预览版发布,使您可以将存储在 Redshift、S3 和一个或多个 RDS 和 Aurora PostgreSQL 数据库中的数据汇总在一起。在 Amazon Redshift 管理控制台中创建集群时,您可以选择三个维护追踪:当前、跟踪或预览。在“预览”追踪内,应选择 preview_features 以参与联合查询的公开预览。例如:



这些功能简化了数据处理和分析,为您提供了更多快速响应工具和单一数据视图。快来告诉我您打算怎么使用它们吧!


本文转载自 AWS 技术博客。


原文链接:https://amazonaws-china.com/cn/blogs/china/new-for-amazon-redshift-data-lake-export-and-federated-queries/


2019-12-11 15:34646

评论

发布
暂无评论
发现更多内容

数据湖统一元数据与权限

阿里云大数据AI技术

大数据 企业号九月金秋榜

有了QQ和微信,企业是否还需要另外一个即时通讯工具?

WorkPlus

XDR的技术栈参考

极盾科技

网络安全 数据安全 xdr

openGauss内核分析:SQL by pass & 经典执行器

华为云开发者联盟

数据库 后端 企业号九月金秋榜

Python图像处理丨认识图像锐化和边缘提取的4个算子

华为云开发者联盟

Python 人工智能 图像处理 企业号九月金秋榜

Servent

喜羊羊

9月月更

数字人技术在直播场景下的应用

百度Geek说

人工智能 直播 企业号九月金秋榜

合阔智云核心生产系统切换到服务网格 ASM 的落地实践

阿里巴巴中间件

阿里云 Kubernetes 云原生 服务网格 合作

吃透JAVA的Stream流操作,多年实践总结

Java快了!

stream java;

对话杨传辉:国产数据库新战绩背后,OceanBase坚持自研的初心与决心

OceanBase 数据库

【文本检测与识别-白皮书】第一章:技术背景

合合技术团队

文字识别 文本 人工智能’

构建AI原生的智能计算基础设施,百度百舸·AI异构计算平台2.0发布

Baidu AICLOUD

模型训练 异构计算 智算中心

上海华为云SaaS应用创新创业大赛暨828 B2B企业节发布仪式

科技怪咖

一文带你认知定时消息发布RocketMQ

华为云开发者联盟

云计算 后端 华为云 企业号九月金秋榜

企业即时通讯IM能给移动办公带来哪些便利?

WorkPlus

MySQL 数据库 - 函数 约束 多表查询 事务

喜羊羊

MySQL 9月月更

华为云WeLink直播助力高校毕业典礼:这届毕业生,我们云上嗨

科技怪咖

MobTech秒验 Android端如何在授权界面添加短信登录按钮

MobTech袤博科技

android sdk

红象云腾(Redoop Enterprise)V9 与龙蜥(Anolis OS)8 完成兼容认证

OpenAnolis小助手

大数据 开源 适配 龙蜥操作系统 红象云腾

不容错过的技术盛宴,4场全是 eBPF 技术干货,今天见 | 第 44-47 期

OpenAnolis小助手

Linux 开源 ebpf sig 龙蜥大讲堂

从采集到存储:时序数据库到底怎么处理时间?

Apache IoTDB

IoTDB Apache IoTDB

LeetCode-9. 回文数(java)

bug菌

9月日更 9月月更

MySQL 数据库 - 通用语法 DDL DML DQL DCL

喜羊羊

MySQL 9月月更

Chrome操作指南——入门篇(一)

Augus

Chrome开发者工具 9月月更

【从零开始学docker】一、Docker的安装,启动以及工作原理

泡泡

云计算 容器 云原生 9月月更

高性能数据访问中间件 OBProxy(四):一文讲透连接管理

OceanBase 数据库

阿里云如何基于边缘云设计终端云化场景的架构?

阿里云视频云

边缘技术 边缘云

FreeRTOS记录(四、FreeRTOS任务堆栈溢出问题和临界区)

矜辰所致

堆栈溢出 临界区保护 FreeRTOS 9月月更

LeetCode-13. 罗马数字转整数(java)

bug菌

9月日更 Leet Code 9月月更

5年专业研究,这份云原生安全指南请查收!

博文视点Broadview

得物云原生全链路追踪Trace2.0架构实践

得物技术

云原生 监控 链路追踪 OpenTelemetry 企业号九月金秋榜

Amazon Redshift 的新功能 – 数据湖导出和联合查询_其他_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章