Amazon Glue for Spark 中的输入和输出的数据格式选项 - Amazon Glue
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

Amazon Glue for Spark 中的输入和输出的数据格式选项

这些页面提供有关 Amazon Glue for Spark 支持的数据格式的功能支持和配置参数的信息。有关这些信息用法和适用性的说明,请参阅以下内容。

Amazon Glue 中跨数据格式的支持功能

每种数据格式可能支持不同的 Amazon Glue 功能。您的数据格式是否以下常用功能应视其类型而定。请参阅数据格式的相关文档,了解如何利用我们的功能满足您的需求。

Read Amazon Glue 无需额外资源(例如连接器)即可识别和解释此数据格式。
Write Amazon Glue 可以在没有额外资源的情况下以此格式写入数据。您可以在任务中加入第三方库并使用标准 Apache Spark 函数来写入数据,就像在其他 Spark 环境中一样。有关库的更多信息,请参阅 将 Python 库与 Amazon Glue 一起使用
流式传输读取 Amazon Glue 可以从 Apache Kafka、Amazon Managed Streaming for Apache Kafka 或 Amazon Kinesis 消息流中识别和解释此数据格式。我们期望流以一致的格式呈现数据,因此数据将读入为 DataFrames
对小文件进行分组 Amazon Glue 在执行 Amazon Glue 转换时可以将文件合并到发送至每个节点的批处理工作中。这可以显著提高涉及大量小文件的工作负载性能。有关更多信息,请参阅以较大的组读取输入文件
作业书签 Amazon Glue 可以跟踪转换的进度,在任务运行期间使用任务书签对相同数据集执行相同的工作。这可以提高涉及多个数据集且其中只需要处理上次任务运行之后产生的新数据的工作负载性能。有关更多信息,请参阅 使用作业书签跟踪已处理的数据

Amazon Glue 中用于与数据格式交互的参数

某些 Amazon Glue 连接类型支持多种 format 类型,这需要您在使用类似 GlueContext.write_dynamic_frame.from_options 的方法时,使用 format_options 对象指定关于数据格式的信息。

有些连接类型不需要 format_options。例如,在正常使用过程中,连接至关系数据库的 JDBC 连接以一致的表格数据格式检索数据。因此,从 JDBC 连接中进行读取不需要 format_options

某些在 Glue 中读取和写入数据的方法不需要 format_options。例如,通过 Amazon Glue 爬网程序使用 GlueContext.create_dynamic_frame.from_catalog。爬网程序决定数据的形状。使用爬网程序时,Amazon Glue 分类器将检查数据,以便就如何表示数据格式做出明智决策。然后,它会将数据表示形式存储在 Amazon Glue 数据目录中,此数据目录可以在 Amazon Glue ETL 脚本中使用,以通过 GlueContext.create_dynamic_frame.from_catalog 方法检索数据。爬网程序无需您手动指定有关数据格式的信息。

对于访问 Amazon Lake Formation 受管表的任务,Amazon Glue 支持读取和写入 Lake Formation 受管表支持的所有格式。有关当前 Amazon Lake Formation 受管表支持的格式列表,请参阅 Amazon Lake Formation 开发人员指南中的受管表的注释和限制

注意

对于写入 Apache Parquet,Amazon Glue ETL 仅支持为针对动态帧进行优化的自定义 Parquet 编写器类型指定选项来写入受管表。使用 parquet 格式写入受管表时,应在表参数中添加值为 true 的键 useGlueParquetWriter

共享配置参考

您可以对任何格式类型使用以下 format_options 值:

  • attachFilename - 适当格式的字符串,用作列名。如果您提供此选项,则记录的源文件名将附加到记录中。参数值将用作列名。

  • attachTimestamp - 适当格式的字符串,用作列名。如果您提供此选项,则记录的源文件的修改时间将附加到记录中。参数值将用作列名。