在 中提取和查询半结构化数据Amazon Redshift(预览版) - Amazon Redshift
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在 中提取和查询半结构化数据Amazon Redshift(预览版)

这是 Amazon Redshift 的半结构化数据功能的预发布文档,目前为预览版。文档和功能均可能随时更改。我们建议您只在测试集群中使用此功能,而不要在生产环境中使用。有关预览版条款和条件,请参阅 AWS 服务条款中的Beta 服务参与

通过在 中使用半结构化数据支持Amazon Redshift,您可以提取半结构化数据并将其存储在Amazon Redshift数据仓库中。使用 SUPER 数据类型和PartiQL语言, Amazon Redshift 可以扩展数据仓库功能,以便与 SQL 和 NoSQL 数据源集成。这样, Amazon Redshift 可以对关系和半结构化存储数据(如 JSON)进行高效分析。

Amazon Redshift 提供两种形式的半结构化数据支持:SUPER 数据类型 和 Amazon Redshift Spectrum。

如果您需要以低延迟插入或更新少量 JSON 数据,请使用 SUPER 数据类型。此外,当您的查询需要强一致性、可预测的查询性能、复杂的查询支持以及易于用于不断变化的架构和无架构数据时,请使用 SUPER。

相反,如果您的数据查询需要与其他 Amazon Redshift Spectrum 服务集成,并且数据主要存储在 中AWS以用于存档目的,请将 与开放文件格式Amazon S3结合使用。

SUPER 数据类型的使用案例

使用 中的 SUPER 数据类型的半结构化数据支持Amazon Redshift提供了出色的性能、灵活性和易用性。以下使用案例帮助演示如何将半结构化数据支持与 SUPER 结合使用。

快速而灵活的 JSON 数据插入–Amazon Redshift支持快速事务,这些事务可以分析 JSON 并将其存储为 SUPER 值。插入事务的运行速度比在表中执行相同的插入操作要快五倍,这些表已将 SUPER 的属性分解为常规列。例如,假设传入 JSON 的格式为 {“a”:.,“b”:.,“c”“..., ...}。您可以通过将传入的 JSON 存储在具有单个 SUPER 列 S 的表中来多次提升插入性能,而不是将其存储在具有列“a”、“b”、“c”等的传统表 TR 中。当 JSON 中有数百个属性时,SUPER 数据类型的性能优势将变得非常大。

此外,SUPER 数据类型不需要常规架构。您无需在存储传入 JSON 之前对其进行自检和清理。例如,假设传入 JSON 具有字符串“c”属性,而其他属性具有整数“c”属性,而没有 SUPER 数据类型。在这种情况下,您必须分离 c_string 和 c_int 列或清除数据。相比之下,对于 SUPER 数据类型,所有 JSON 数据存储在提取期间,而不会丢失信息。稍后,您可以使用 SQL 的 PartiQL 扩展来分析信息。

灵活的发现查询 在将半结构化数据(如 JSON)存储到 SUPER 数据值–后,您可以查询该数据而无需实施架构。您可以使用PartiQL动态类型和延迟语义来运行查询和发现所需的深层嵌套数据,而无需在查询之前施加架构。

针对提取、加载、转换 (ETL) 操作将传统具体化视图的灵活查询 在将无架构和半结构化数据存储到 SUPER 中–后,您可以使用PartiQL具体化视图来自检数据并将其剪切到具体化视图中。

具有已销毁数据的具体化视图是您的经典分析案例具有很好的性能和可用性优势的一个很好的示例。在对已销毁数据执行分析时,Amazon Redshift具体化视图的列式组织提供了更好的性能。此外,需要提取数据的传统架构的用户和商业智能 (BI) 工具可以使用视图(具体化或虚拟)作为数据的传统架构呈现形式。

在PartiQL具体化视图以 JSON 或 SUPER 形式发现的数据提取到传统的列式具体化视图中后,您可以查询具体化视图。有关 SUPER 数据类型如何与具体化视图配合使用的更多信息,请参阅将 SUPER 数据类型用于具体化视图

SUPER 数据类型使用的概念

接下来,您可以找到一些 Amazon Redshift SUPER 数据类型概念。

了解 SUPER Amazon Redshift – 数据类型在 中的作用 SUPER 数据类型是一种 Amazon Redshift 数据类型,它支持存储包含Amazon Redshift标量和可能的嵌套数组和结构的无架构数组和结构。SUPER 数据类型可以本机存储不同格式的半结构化数据,例如 JSON 或源自面向文档的源的数据。您可以添加新的 SUPER 列来存储半结构化数据,并编写访问 SUPER 列以及常规标量列的查询。有关 SUPER 数据类型的更多信息,请参阅SUPER 类型

将无架构 JSON 提取到 SUPER – 利用灵活的半结构化 SUPER 数据类型, Amazon Redshift 可以接收无架构 JSON 并将其提取到 SUPER 值。例如, Amazon Redshift 可以将 JSON 值 [10.5, "first"] 提取到 SUPER 值 [10.5, 'first'],这是包含Amazon Redshift十进制 10.5 和 varchar 'first' 的数组。 Amazon Redshift 可以使用 COPY 命令或 JSON 解析函数(如 json_parse('Ap0.50.5, 'first"]))将 JSON 提取到 SUPERER 值。默认情况下,COPY 和 JSON_PARSE 都使用严格解析语义提取 JSON。您还可以使用数据库数据本身构造 SUPER 值,包括数组和结构。

在提取无架构 JSON 的不规则结构时,SUPER 列不需要修改架构。例如,在分析点击流时,您最初将 存储在具有属性“IP”和“time”的 SUPER 列“单击”结构中。您可以添加属性“customer id”,而无需更改架构以便提取此类更改。

用于 SUPER 数据类型的本机格式是一种二进制格式,需要比其文本格式中的 JSON 值小的空间。这可在查询时更快地对 SUPER 值进行提取和运行时处理。

使用 查询 SUPER 数据PartiQL–PartiQL是 SQL-92 的向后兼容的扩展,许多 AWS 服务当前使用这些扩展。通过使用 PartiQL,熟悉的 SQL 构造无缝地组合了对经典、表格式 SQL 数据和 SUPER 的半结构化数据的访问。您可以执行对象和数组导航以及取消嵌套数组。PartiQL 扩展了标准 SQL 语言,以声明方式表达和处理嵌套数据和多值数据。

PartiQL 是 SQL 的扩展,其中 SUPER 列的嵌套数据和无架构数据是一流的公民。PartiQL 不需要在查询编译期间检查所有查询表达式的类型。此方法允许在查询执行期间在访问 SUPER 列内实际数据类型时动态键入包含 SUPER 数据类型的查询表达式。此外, 在延迟模式下PartiQL运行,此时类型不一致不会导致失败。利用无架构查询和延迟查询处理的组合, PartiQL 非常适合提取、加载、传输 (ELT) 应用程序,此时您的 SQL 查询将评估在 SUPER 列中提取的 JSON 数据。

与 集成 在通过 JSON、Parquet 和其他具有嵌套数据的格式运行Redshift Spectrum查询时–Amazon RedshiftPartiQLRedshift Spectrum支持 的多个方面。 Redshift Spectrum 仅支持具有架构的嵌套数据。例如,利用 Redshift Spectrum ,您可以声明 JSON 数据在架构 <STRUCT<a:INTEGER, b:DECIMAL(5,2)>ARRAY> 中具有 attribute nested_schemaful_example。此属性的架构确定数据始终包含一个数组,其中包含具有整数 a 和小数 b 的结构。如果数据更改以包含更多属性,则类型也会更改。相反,SUPER 数据类型不需要任何架构。您可以使用具有不同属性或类型的结构元素存储数组。此外,一些值可存储在数组之外。

SUPER 数据的注意事项

使用 SUPER 数据时,请考虑以下事项:

  • Amazon Redshift 集群必须位于 SQL_PREVIEW 维护跟踪上。

  • 您可以从 Amazon RedshiftSQL_PREVIEW 跟踪创建新集群或从当前跟踪将快照还原到 SQL_PREVIEW 跟踪。

  • 您无法将现有Amazon Redshift集群从当前或尾随状态切换到此预览跟踪,反之亦然。

  • 半结构化数据预览期预计将持续到 2021 年 2 月 28 日及之后。

  • 您可以使用任何区域中的集群AWS通过 SQL_PREVIEW 跟踪预览半结构化数据功能。对于预览期间与预览功能相关的任何疑问、问题或反馈,请向 发送电子邮件redshift-super@amazon.com

  • 使用 JDBC 驱动程序版本 1.0.50 和 ODBC 驱动程序版本 1.4.17 或更高版本。

    有关 JDBC 驱动程序的信息,请参阅配置 JDBC 连接

    有关 ODBC 驱动程序的信息,请参阅配置 ODBC 连接

  • 在中查找本文档中使用的架构示例SUPER 示例数据集

  • 此文档中使用的所有SQLs包括 DDL 和 COPY 以及使用 SUPER 的选择性 TPCH 修改查询的副本都包含在相同的下载 S3 前缀中。要查看或下载 sql 文件,请执行以下操作之一:

    • 下载 SUPER 教程 SQL 文件TPCH 文件

    • 使用 AWS Amazon S3 CLI 运行以下命令。您可以使用自己的目标路径。

      aws s3 cp s3://redshift-downloads/semistructured/tutorialscripts/semistructured-tutorial.sql /target/path aws s3 cp s3://redshift-downloads/semistructured/tutorialscripts/super_tpch_queries.sql /target/path