本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon S3 连接
您可以使用 Amazon Glue for Spark 在 Amazon S3 中读取和写入文件。AmazonGlue for Spark 支持许多开箱即用的存储在 Amazon S3 中的常见数据格式,包括 CSV、Avro、JSON、Orc 和 Parquet。有关支持的数据格式的更多信息,请参阅 Amazon Glue for Spark 中的输入和输出的数据格式选项。每种数据格式可能支持不同的 Amazon Glue 功能集。有关功能支持的细节,请查阅您的数据格式页面。此外,您可以读取和写入存储在 Hudi、Iceberg 和 Delta Lake 数据湖框架中的版本控制文件。有关数据湖框架的更多信息,请参阅 在 Amazon Glue ETL 任务中使用数据湖框架。
使用 Amazon Glue,您可以在写入时将 Amazon S3 对象分成文件夹结构,然后使用简单的配置按分区检索以提高性能。您还可以设置配置,以便在转换数据时将小文件分组在一起以提高性能。您可以在 Amazon S3 中进行读写 bzip2
和 gzip
存档。
主题
配置 S3 连接
要在 Amazon Glue with Spark 作业中连接到 Amazon S3,需要具备一些先决条件:
-
Amazon Glue 作业必须拥有对相关 Amazon S3 存储桶的 IAM 权限。
在某些情况下,您需要配置其他先决条件:
-
配置跨账户访问时,需要对 Amazon S3 存储桶进行适当的访问控制。
-
出于安全考虑,您可以选择通过 Amazon VPC 路由您的 Amazon S3 请求。此方法可能会带来带宽和可用性方面的难题。有关更多信息,请参阅 适用于 Amazon S3 的 Amazon VPC 终端节点。
Amazon S3 连接选项参考
指定与 Amazon S3 的连接。
由于 Amazon S3 管理文件而不是表,因此除了指定本文档中提供的连接属性外,您还需要指定有关文件类型的额外配置。您可以通过数据格式选项来指定此信息。有关格式选项的更多信息,请参阅 Amazon Glue for Spark 中的输入和输出的数据格式选项。您也可以通过与 Amazon Glue Data Catalog 集成来指定此信息。
有关连接选项和格式选项之间区别的示例,请考虑 create_dynamic_frame_from_options 方法如何采用 connection_type
、connection_options
、format
和 format_options
。本节专门讨论提供给 connection_options
的参数。
"connectionType": "s3"
可使用以下连接选项:
-
"paths"
:(必需)要从中读取数据的 Amazon S3 路径的列表。 -
"exclusions"
:(可选)包含要排除的 Unix 样式 glob 模式的 JSON 列表的字符串。例如,"[\"**.pdf\"]"
会排除所有 PDF 文件。有关 Amazon Glue 支持的 glob 语法的更多信息,请参阅包含和排除模式。 -
"compressionType"
或 "compression
":(可选)指定数据压缩方式。使用适用于 Amazon S3 源的"compressionType"
以及适用于 Amazon S3 目标的"compression"
。通常,如果数据有标准文件扩展名,则不需要指定。可能的值为"gzip"
和"bzip2"
。特定格式可能支持其他压缩格式。有关功能支持的细节,请查阅数据格式页面。 -
"groupFiles"
:(可选)当输入包含超过 50,000 个文件时,默认启用文件分组。当少于 50,000 个文件时,若要启用分组,请将此参数设置为"inPartition"
。当超过 50,000 个文件时,若要禁用分组,请将此参数设置为"none"
。 -
"groupSize"
:(可选)目标组大小(以字节为单位)。默认值根据输入数据大小和群集大小进行计算。当少于 50,000 个输入文件时,"groupFiles"
必须设置为"inPartition"
,此选项才能生效。 -
"recurse"
:(可选)如果设置为 true,则以递归方式读取指定路径下的所有子目录中的文件。 -
"maxBand"
:(可选,高级)此选项控制s3
列表可能保持一致的持续时间(以毫秒为单位)。当使用JobBookmarks
来表明 Amazon S3 最终一致性时,将专门跟踪修改时间戳在最后maxBand
毫秒内的文件。大多数用户不需要设置此选项。默认值为 900000 毫秒或 15 分钟。 -
"maxFilesInBand"
:(可选,高级)此选项指定在最后maxBand
秒内可保存的最大文件数量。如果超过此值,额外的文件将会跳过,且只能在下一次作业运行中处理。大多数用户不需要设置此选项。 -
"isFailFast"
:(可选)此选项用于确定 Amazon Glue ETL 任务是否导致读取器解析异常。如果设置为true
,并且 Spark 任务的四次重试无法正确解析数据,则任务会快速失败。 -
"catalogPartitionPredicate"
:(可选)用于读取。SQLWHERE
子句的内容。从具有大量分区的 Data Catalog 表中读取时使用。从 Data Catalog 索引中检索匹配的分区。与push_down_predicate
一起使用,create_dynamic_frame_from_catalog 方法(以及其他类似方法)上的一个选项。有关更多信息,请参阅 使用目录分区谓词进行服务器端筛选。 -
"partitionKeys"
:(可选)用于写入。列标签字符串数组。AmazonGlue 将按照此配置的指定对您的数据进行分区。有关更多信息,请参阅 写入分区。 -
"excludeStorageClasses"
:(可选)用于读取。指定 Amazon S3 存储类的字符串数组。AmazonGlue 将根据此配置排除 Amazon S3 对象。有关更多信息,请参阅 排除 Amazon S3 存储类。
已弃用的数据格式连接语法
某些数据格式可以使用特定的连接类型语法进行访问。此语法已被弃用。我们建议您改用 Amazon Glue for Spark 中的输入和输出的数据格式选项 中提供的 s3
连接类型和格式选项来指定格式。
"connectionType": "orc"
指定与 Amazon S3 中以 Apache Hive 优化的行列式(ORC)
"connectionType": "orc"
可使用以下连接选项:
-
paths
:(必需)要从中读取数据的 Amazon S3 路径的列表。 -
(其他选项名称/值对):任何其他选项(包括格式化选项)将直接传递给 SparkSQL
DataSource
。
"connectionType": "parquet"
指定与 Amazon S3 中以 Apache Parquet
"connectionType": "parquet"
可使用以下连接选项:
-
paths
:(必需)要从中读取数据的 Amazon S3 路径的列表。 -
(其他选项名称/值对):任何其他选项(包括格式化选项)将直接传递给 SparkSQL
DataSource
。