GlueContext 类 - AWS Glue
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

如果我们为英文版本指南提供翻译,那么如果存在任何冲突,将以英文版本指南为准。在提供翻译时使用机器翻译。

GlueContext 类

包装 Apache SparkSQL SQLContext 对象,从而提供与 Apache Spark 平台交互的机制。

在 Amazon S3 中使用数据集

purge_table

purge_table(database, table_name, options={}, transformation_ctx="", catalog_id=None)

从 Amazon S3 中删除指定目录的数据库和表的文件。如果删除一个分区中的所有文件,则也会从目录中删除该分区。

如果您希望能够恢复已删除的对象,则可以在 Amazon S3 存储桶上启用对象版本控制。如果从未启用对象版本控制的存储桶中删除一个对象,则无法恢复该对象。有关如何恢复已启用版本控制的存储桶中的已删除对象的更多信息,请参阅 AWS Support 知识中心中的如何检索已删除的 Amazon S3 对象?

  • database – 要使用的数据库。

  • table_name – 要使用的表的名称。

  • options – 用于筛选要删除的文件和清单文件生成的选项。

    • retentionPeriod – 指定保留文件的时段(以小时为单位)。比保留期更新的文件将被保留。默认情况下设置为 168 小时(7 天)。

    • partitionPredicate – 满足此谓词的分区将被删除。这些分区中保留期内的文件不会被删除。设置为 "" – 默认情况下为空。

    • excludeStorageClassesexcludeStorageClasses 集中包含存储类的文件不会被删除。默认值是 Set() – 一个空集。

    • manifestFilePath – 用于生成清单文件的可选路径。所有成功清除的文件将记录在 Success.csv 中,所有未能清除的文件将记录在 Failed.csv

  • transformation_ctx – 要使用的转换上下文(可选)。在清单文件路径中使用。

  • catalog_id – 正在访问的 数据目录 的目录 ID(数据目录 的账户 ID)。默认设置为 NoneNone 默认为服务中调用账户的目录 ID。

glueContext.purge_table("database", "table", {"partitionPredicate": "(month=='march')", "retentionPeriod": 1, "excludeStorageClasses": ["STANDARD_IA"], "manifestFilePath": "s3://bucketmanifest/"})

purge_s3_path

purge_s3_path(s3_path, options={}, transformation_ctx="")

以递归方式从指定的 Amazon S3 路径中删除文件。

如果您希望能够恢复已删除的对象,则可以在 Amazon S3 存储桶上启用对象版本控制。如果从未启用对象版本控制的存储桶中删除一个对象,则无法恢复该对象。有关如何恢复已启用版本控制的存储桶中的已删除对象的更多信息,请参阅 AWS Support 知识中心中的如何检索已删除的 Amazon S3 对象?

  • s3_path – 要删除的文件 Amazon S3 中的路径,格式为 s3://<bucket>/<prefix>/

  • options – 用于筛选要删除的文件和清单文件生成的选项。

    • retentionPeriod – 指定保留文件的时段(以小时为单位)。比保留期更新的文件将被保留。默认情况下设置为 168 小时(7 天)。

    • partitionPredicate – 满足此谓词的分区将被删除。这些分区中保留期内的文件不会被删除。设置为 "" – 默认情况下为空。

    • excludeStorageClassesexcludeStorageClasses 集中包含存储类的文件不会被删除。默认值是 Set() – 一个空集。

    • manifestFilePath – 用于生成清单文件的可选路径。所有成功清除的文件将记录在 Success.csv 中,所有未能清除的文件将记录在 Failed.csv

  • transformation_ctx – 要使用的转换上下文(可选)。在清单文件路径中使用。

  • catalog_id – 正在访问的 数据目录 的目录 ID(数据目录 的账户 ID)。默认设置为 NoneNone 默认为服务中调用账户的目录 ID。

glueContext.purge_s3_path("s3://bucket/path/", {"retentionPeriod": 1, "excludeStorageClasses": ["STANDARD_IA"], "manifestFilePath": "s3://bucketmanifest/"})

transition_table

transition_table(database, table_name, transition_to, options={}, transformation_ctx="", catalog_id=None)

为指定目录的数据库和表转换存储在 Amazon S3 上的文件的存储类。

可以在任意两个存储类之间转换。对于 GLACIERDEEP_ARCHIVE 存储类,您可以转换到这些类。但您可以使用 S3 RESTOREGLACIERDEEP_ARCHIVE 存储类进行转换。

如果您要运行从 Amazon S3 读取文件或分区的 AWS Glue ETL 作业,则可以排除某些 Amazon S3 存储类类型。有关更多信息,请参阅排除 Amazon S3 存储类

  • database – 要使用的数据库。

  • table_name – 要使用的表的名称。

  • transition_to – 要转换到的 Amazon S3 存储类

  • options – 用于筛选要删除的文件和清单文件生成的选项。

    • retentionPeriod – 指定保留文件的时段(以小时为单位)。比保留期更新的文件将被保留。默认情况下设置为 168 小时(7 天)。

    • partitionPredicate – 将转换满足此谓词的分区。这些分区中保留期内的文件不会被转换。设置为 "" – 默认情况下为空。

    • excludeStorageClassesexcludeStorageClasses 集中包含存储类的文件不会被转换。默认值是 Set() – 一个空集。

    • manifestFilePath – 用于生成清单文件的可选路径。所有成功转换的文件将记录在 Success.csv 中,所有未能转换的文件将记录在 Failed.csv

    • accountId – 要运行转换的 AWS 账户 ID。对于此转换是必需的。

    • roleArn – 要运行转换的 AWS 角色。对于此转换是必需的。

  • transformation_ctx – 要使用的转换上下文(可选)。在清单文件路径中使用。

  • catalog_id – 正在访问的 数据目录 的目录 ID(数据目录 的账户 ID)。默认设置为 NoneNone 默认为服务中调用账户的目录 ID。

glueContext.transition_table("database", "table", "STANDARD_IA", {"retentionPeriod": 1, "excludeStorageClasses": ["STANDARD_IA"], "manifestFilePath": "s3://bucketmanifest/", "accountId": "12345678901", "roleArn": "arn:aws:iam::123456789012:user/example-username"})

transition_s3_path

transition_s3_path(s3_path, transition_to, options={}, transformation_ctx="")

以递归方式转换指定 Amazon S3 路径中的文件的存储类。

可以在任意两个存储类之间转换。对于 GLACIERDEEP_ARCHIVE 存储类,您可以转换到这些类。但您可以使用 S3 RESTOREGLACIERDEEP_ARCHIVE 存储类进行转换。

如果您要运行从 Amazon S3 读取文件或分区的 AWS Glue ETL 作业,则可以排除某些 Amazon S3 存储类类型。有关更多信息,请参阅排除 Amazon S3 存储类

  • s3_path – 要转换的文件的 Amazon S3 中的路径,格式为 s3://<bucket>/<prefix>/

  • transition_to – 要转换到的 Amazon S3 存储类

  • options – 用于筛选要删除的文件和清单文件生成的选项。

    • retentionPeriod – 指定保留文件的时段(以小时为单位)。比保留期更新的文件将被保留。默认情况下设置为 168 小时(7 天)。

    • partitionPredicate – 将转换满足此谓词的分区。这些分区中保留期内的文件不会被转换。设置为 "" – 默认情况下为空。

    • excludeStorageClassesexcludeStorageClasses 集中包含存储类的文件不会被转换。默认值是 Set() – 一个空集。

    • manifestFilePath – 用于生成清单文件的可选路径。所有成功转换的文件将记录在 Success.csv 中,所有未能转换的文件将记录在 Failed.csv

    • accountId – 要运行转换的 AWS 账户 ID。对于此转换是必需的。

    • roleArn – 要运行转换的 AWS 角色。对于此转换是必需的。

  • transformation_ctx – 要使用的转换上下文(可选)。在清单文件路径中使用。

glueContext.transition_s3_path("s3://bucket/prefix/", "STANDARD_IA", {"retentionPeriod": 1, "excludeStorageClasses": ["STANDARD_IA"], "manifestFilePath": "s3://bucketmanifest/", "accountId": "12345678901", "roleArn": "arn:aws:iam::123456789012:user/example-username"})

创建

__init__

__init__(sparkContext)

  • sparkContext – 要使用的 Apache Spark 上下文。

getSource

getSource(connection_type, transformation_ctx = "", **options)

创建一个 DataSource 对象,该对象可用于从外部来源读取 DynamicFrames

  • connection_type – 要使用的连接类型,例如 Amazon Simple Storage Service (Amazon S3)、Amazon Redshift 和 JDBC。有效值包括 s3mysqlpostgresqlredshiftsqlserveroracledynamodb

  • transformation_ctx – 要使用的转换上下文(可选)。

  • options – 可选名称/值对的集合。有关更多信息,请参阅Connection Types and Options for ETL in AWS Glue

以下是使用 getSource 的示例。

>>> data_source = context.getSource("file", paths=["/in/path"]) >>> data_source.setFormat("json") >>> myFrame = data_source.getFrame()

create_dynamic_frame_from_rdd

create_dynamic_frame_from_rdd(data, name, schema=None, sample_ratio=None, transformation_ctx="")

返回一个从 Apache Spark 弹性分布式数据集 (RDD) 创建的 DynamicFrame

  • data – 要使用的数据源。

  • name – 要使用的数据的名称。

  • schema – 要使用的架构(可选)。

  • sample_ratio – 要使用的采样率(可选)。

  • transformation_ctx – 要使用的转换上下文(可选)。

create_dynamic_frame_from_catalog

create_dynamic_frame_from_catalog(database, table_name, redshift_tmp_dir, transformation_ctx = "", push_down_predicate= "", additional_options = {}, catalog_id = None)

返回一个使用目录数据库和表名称创建的 DynamicFrame

  • Database – 要从中进行读取的数据库。

  • table_name – 要从中进行读取的表的名称。

  • redshift_tmp_dir – 要使用的 Amazon Redshift 临时目录(可选)。

  • transformation_ctx – 要使用的转换上下文(可选)。

  • push_down_predicate – 筛选分区,而不必列出并读取数据集中的所有文件。有关更多信息,请参阅使用下推谓词进行预筛选

  • additional_options – 提供给 AWS Glue 的额外选项。

  • catalog_id — 正在访问的数据目录的目录 ID(账户 ID)。当为 None 时,将使用调用方的默认账户 ID。

create_dynamic_frame_from_options

create_dynamic_frame_from_options(connection_type, connection_options={}, format=None, format_options={}, transformation_ctx = "")

返回一个使用指定连接和格式创建的 DynamicFrame

  • connection_type – 连接类型,例如 Amazon S3、Amazon Redshift 和 JDBC。有效值包括 s3mysqlpostgresqlredshiftsqlserveroracledynamodb

  • connection_options – 连接选项,例如路径和数据库表(可选)。对于 connection_types3 的情况,定义 Amazon S3 路径的列表。

    connection_options = {"paths": ["s3://aws-glue-target/temp"]}

    对于 JDBC 连接,必须定义多个属性。请注意,数据库名称必须是 URL 的一部分。它可以选择性地包含在连接选项中。

    connection_options = {"url": "jdbc-url/database", "user": "username", "password": "password","dbtable": "table-name", "redshiftTmpDir": "s3-tempdir-path"}

    dbtable 属性是 JDBC 表的名称。对于在数据库中支持架构的 JDBC 数据存储,指定 schema.table-name。如果未提供架构,则使用默认的“public”架构。

    有关更多信息,请参阅Connection Types and Options for ETL in AWS Glue

  • format – 格式规范(可选)。这用于 Amazon S3 或支持多种格式的 AWS Glue 连接。有关支持的格式,请参阅 中的 ETL 输入和输出的格式选项AWS Glue

  • format_options – 指定格式的格式选项。有关支持的格式,请参阅 中的 ETL 输入和输出的格式选项AWS Glue

  • transformation_ctx – 要使用的转换上下文(可选)。

编写

getSink

getSink(connection_type, format = None, transformation_ctx = "", **options)

获取一个 DataSink 对象,该对象可用于将 DynamicFrames 写入外部来源。先检查 SparkSQL format 以确保获得预期的接收器。

  • connection_type – 要使用的连接类型,例如 Amazon S3、Amazon Redshift 和 JDBC。有效值包括 s3mysqlpostgresqlredshiftsqlserveroracle

  • format – 要使用的 SparkSQL 格式(可选)。

  • transformation_ctx – 要使用的转换上下文(可选)。

  • options – 选项名称/值对的集合。

例如:

>>> data_sink = context.getSink("s3") >>> data_sink.setFormat("json"), >>> data_sink.writeFrame(myFrame)

write_dynamic_frame_from_options

write_dynamic_frame_from_options(frame, connection_type, connection_options={}, format=None, format_options={}, transformation_ctx = "")

写入并返回一个使用指定连接和格式的 DynamicFrame

  • frame – 要编写的 DynamicFrame

  • connection_type – 连接类型,例如 Amazon S3、Amazon Redshift 和 JDBC。有效值包括 s3mysqlpostgresqlredshiftsqlserveroracle

  • connection_options – 连接选项,例如路径和数据库表(可选)。对于 connection_types3 的情况,定义 Amazon S3 路径。

    connection_options = {"path": "s3://aws-glue-target/temp"}

    对于 JDBC 连接,必须定义多个属性。请注意,数据库名称必须是 URL 的一部分。它可以选择性地包含在连接选项中。

    connection_options = {"url": "jdbc-url/database", "user": "username", "password": "password","dbtable": "table-name", "redshiftTmpDir": "s3-tempdir-path"}

    dbtable 属性是 JDBC 表的名称。对于在数据库中支持架构的 JDBC 数据存储,指定 schema.table-name。如果未提供架构,则使用默认的“public”架构。

    有关更多信息,请参阅Connection Types and Options for ETL in AWS Glue

  • format – 格式规范(可选)。这用于 Amazon S3 或支持多种格式的 AWS Glue 连接。有关支持的格式,请参阅 中的 ETL 输入和输出的格式选项AWS Glue

  • format_options – 指定格式的格式选项。有关支持的格式,请参阅 中的 ETL 输入和输出的格式选项AWS Glue

  • transformation_ctx – 要使用的转换上下文(可选)。

write_from_options

write_from_options(frame_or_dfc, connection_type, connection_options={}, format={}, format_options={}, transformation_ctx = "")

写入并返回一个使用指定连接和格式信息创建的 DynamicFrame or DynamicFrameCollection

  • frame_or_dfc – 要写入的 DynamicFrameDynamicFrameCollection

  • connection_type – 连接类型,例如 Amazon S3、Amazon Redshift 和 JDBC。有效值包括 s3mysqlpostgresqlredshiftsqlserveroracle

  • connection_options – 连接选项,例如路径和数据库表(可选)。对于 connection_types3 的情况,定义 Amazon S3 路径。

    connection_options = {"path": "s3://aws-glue-target/temp"}

    对于 JDBC 连接,必须定义多个属性。请注意,数据库名称必须是 URL 的一部分。它可以选择性地包含在连接选项中。

    connection_options = {"url": "jdbc-url/database", "user": "username", "password": "password","dbtable": "table-name", "redshiftTmpDir": "s3-tempdir-path"}

    dbtable 属性是 JDBC 表的名称。对于在数据库中支持架构的 JDBC 数据存储,指定 schema.table-name。如果未提供架构,则使用默认的“public”架构。

    有关更多信息,请参阅Connection Types and Options for ETL in AWS Glue

  • format – 格式规范(可选)。这用于 Amazon S3 或支持多种格式的 AWS Glue 连接。有关支持的格式,请参阅 中的 ETL 输入和输出的格式选项AWS Glue

  • format_options – 指定格式的格式选项。有关支持的格式,请参阅 中的 ETL 输入和输出的格式选项AWS Glue

  • transformation_ctx – 要使用的转换上下文(可选)。

write_dynamic_frame_from_catalog

write_dynamic_frame_from_catalog(frame, database, table_name, redshift_tmp_dir, transformation_ctx = "", addtional_options = {}, catalog_id = None)

写入并返回一个使用目录数据库和表名称的 DynamicFrame

  • frame – 要编写的 DynamicFrame

  • Database – 要从中进行读取的数据库。

  • table_name – 要从中进行读取的表的名称。

  • redshift_tmp_dir – 要使用的 Amazon Redshift 临时目录(可选)。

  • transformation_ctx – 要使用的转换上下文(可选)。

  • catalog_id — 正在访问的数据目录的目录 ID(账户 ID)。当为 None 时,将使用调用方的默认账户 ID。

write_dynamic_frame_from_jdbc_conf

write_dynamic_frame_from_jdbc_conf(frame, catalog_connection, connection_options={}, redshift_tmp_dir = "", transformation_ctx = "", catalog_id = None)

写入并返回一个使用指定 JDBC 和连接信息的 DynamicFrame

  • frame – 要编写的 DynamicFrame

  • catalog_connection – 要使用的目录连接。

  • connection_options – 连接选项,例如路径和数据库表(可选)。有关更多信息,请参阅Connection Types and Options for ETL in AWS Glue

  • redshift_tmp_dir – 要使用的 Amazon Redshift 临时目录(可选)。

  • transformation_ctx – 要使用的转换上下文(可选)。

  • catalog_id — 正在访问的数据目录的目录 ID(账户 ID)。当为 None 时,将使用调用方的默认账户 ID。

write_from_jdbc_conf

write_from_jdbc_conf(frame_or_dfc, catalog_connection, connection_options={}, redshift_tmp_dir = "", transformation_ctx = "", catalog_id = None)

写入并返回一个使用指定 JDBC 和连接信息的 DynamicFrame or DynamicFrameCollection

  • frame_or_dfc – 要写入的 DynamicFrameDynamicFrameCollection

  • catalog_connection – 要使用的目录连接。

  • connection_options – 连接选项,例如路径和数据库表(可选)。有关更多信息,请参阅Connection Types and Options for ETL in AWS Glue

  • redshift_tmp_dir – 要使用的 Amazon Redshift 临时目录(可选)。

  • transformation_ctx – 要使用的转换上下文(可选)。

  • catalog_id — 正在访问的数据目录的目录 ID(账户 ID)。当为 None 时,将使用调用方的默认账户 ID。

提取

extract_jdbc_conf

extract_jdbc_conf(connection_name, catalog_id = None)

从 数据目录 中的连接对象返回具有键 userpasswordvendorurldict

  • connection_name – 数据目录 中的连接名称。

  • catalog_id — 正在访问的数据目录的目录 ID(账户 ID)。当为 None 时,将使用调用方的默认账户 ID。