本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在 Amazon Glue 中使用 Parquet 格式
Amazon Glue 从源中检索数据,并将数据写入以各种数据格式存储和传输的目标。如果您的数据以 Parquet 数据格式存储或传输,本文档将向您介绍供您使用 Amazon Glue 中的数据的可用功能。
Amazon Glue 支持使用 Parquet 格式。此格式是一种以性能为导向、基于列的数据格式。有关标准颁发机构对此格式的简介,请参阅 Apache Parquet Documentation Overview
您可以使用 Amazon Glue 从 Amazon S3 和流式处理媒体源读取 Parquet 文件,以及将 Parquet 文件写入 Amazon S3。您可以读取并写入包含 S3 中的 Parquet 文件的 bzip
和 gzip
存档。请在 S3 连接参数 上而非本页中讨论的配置中配置压缩行为。
下表显示了哪些常用 Amazon Glue 功能支持 Parquet 格式选项。
读取 | 写入 | 流式处理读取 | 对小文件进行分组 | 作业书签 |
---|---|---|---|---|
支持 | 支持 | 支持 | 不支持 | 支持* |
* 在 Amazon Glue 版本 1.0+ 中受支持
示例:从 S3 读取 Parquet 文件或文件夹
先决条件:您将需要至您想要读取的 Parquet 文件或文件夹的 S3 路径(s3path
)。
配置:在函数选项中,请指定 format="parquet"
。在您的 connection_options
中,请使用 paths
键指定 s3path
。
您可以在 connection_options
中配置读取器与 S3 的交互方式。有关详细信息,请参阅 Amazon Glue 中 ETL 的连接类型和选项:S3 连接参数。
您可以配置读取器如何解释 format_options
中的 Parquet 文件。有关详细信息,请参阅 Parquet 配置参考。
以下 Amazon Glue ETL 脚本显示了从 S3 读取 Parquet 文件或文件夹的过程:
示例:将 Parquet 文件和文件夹写入 S3
先决条件:您将需要一个初始化的 DataFrame(dataFrame
)或 DynamicFrame(dynamicFrame
)。您还需要预期 S3 输出路径 s3path
。
配置:在函数选项中,请指定 format="parquet"
。在您的 connection_options
中,请使用 paths
键指定 s3path
。
您可以在 connection_options
中进一步修改编写器与 S3 的交互方式。有关详细信息,请参阅 Amazon Glue 中 ETL 的连接类型和选项:S3 连接参数。您可以配置自己的操作在 format_options
中写入文件的内容的方式。有关详细信息,请参阅 Parquet 配置参考。
以下 Amazon Glue ETL 脚本显示了将 Parquet 文件和文件夹写入 S3 的过程。
我们通过 useGlueParquetWriter
配置键为自定义 Parquet 编写器提供 DynamicFrames 的性能优化。要确定此编写器是否适合您的工作负载,请参阅 Glue Parquet 编写器。
Parquet 配置参考
您可以在 Amazon Glue 库指定 format="parquet"
的任何位置使用以下 format_options
:
-
useGlueParquetWriter
– 指定使用具有 DynamicFrame 工作流性能优化的自定义 Parquet 编写器。有关使用情况的详细信息,请参阅 Glue Parquet 编写器。-
类型:布尔值,默认值:
false
-
-
compression
– 指定使用的压缩编解码器。值与org.apache.parquet.hadoop.metadata.CompressionCodecName
完全兼容。-
类型:枚举文本,默认值:
"snappy"
-
值:
"uncompressed"
、"snappy"
、"gzip"
和"lzo"
-
-
blockSize
– 指定内存中缓冲的行组的字节大小。您可以用它来调整性能。大小应精确地划分为若干兆字节。-
类型:数值,默认值:
134217728
-
默认值等于 128MB。
-
-
pageSize
– 指定页面的大小(以字节为单位)。您可以用它来调整性能。页面是必须完全读取以访问单个记录的最小单位。-
类型:数值,默认值:
1048576
-
默认值等于 1MB。
-
注意
此外,基础 SparkSQL 代码所接受的任何选项均可通过 connection_options
映射参数传递给此格式。例如,您可以为 Amazon Glue Spark 读取器设置 Spark 配置(如 mergeSchema
使用 Amazon Glue Parquet 编写器优化写入性能
注意
Amazon Glue Parquet 编写器以前一直通过 glueparquet
格式类型访问。这种访问模式已不再提倡。请改用启用了 useGlueParquetWriter
的 parquet
类型。
Amazon Glue Parquet 编写器具有允许更快地写入 Parquet 文件的性能增强功能。传统编写器在写入之前计算架构。Parquet 格式不会以可快速检索的方式存储架构,因此可能需要一些时间。使用 Amazon Glue Parquet 编写器时,不需要预计算的架构。在数据传入时,编写器会动态计算和修改架构。
指定 useGlueParquetWriter
时请注意以下限制:
-
编写器仅支持架构发展(例如添加或删除列)但不支持更改列类型,例如使用
ResolveChoice
。 -
写入器不支持写入空 DataFrame,例如,写入纯架构文件。通过设置
enableUpdateCatalog=True
实现与 Amazon Glue Data Catalog 的集成时,尝试写入空 DataFrame 不会更新数据目录。这将导致在数据目录中创建一个没有架构的表。
如果您的转换不需要这些限制,则开启 Amazon Glue Parquet 编写器应该能提高性能。