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

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

AWS Glue Scala GlueContext API

程序包:com.amazonaws.services.glue

class GlueContext extends SQLContext(sc) ( @transient val sc : SparkContext, val defaultSourcePartitioner : PartitioningStrategy )

GlueContext 是在 Amazon Simple Storage Service (Amazon S3)、AWS Glue 数据目录、JDBC 等中读取和写入 DynamicFrame 的入口点。此类提供实用程序函数,用于创建可用来读取和写入 DynamicFrame数据源特性DataSink 对象。

如果从源创建的分区数小于分区的最小阈值(默认值为 10),您还可以使用 GlueContext 设置 DynamicFrame 中的目标分区数量(默认值为 20)。

def getCatalogSink

def getCatalogSink( database : String, tableName : String, redshiftTmpDir : String = "", transformationContext : String = "" additionalOptions: JsonOptions = JsonOptions.empty, catalogId: String = null ) : DataSink

创建一个可向在 数据目录 中定义的表中指定的位置写入的 DataSink

  • database — 数据目录 中的数据库名称。

  • tableName — 数据目录 中的表名称。

  • redshiftTmpDir — 用于某些数据接收器的临时暂存目录。默认情况下设置为空。

  • transformationContext — 与作业书签要使用的接收器关联的转换上下文。默认情况下设置为空。

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

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

返回 DataSink

def getCatalogSource

def getCatalogSource( database : String, tableName : String, redshiftTmpDir : String = "", transformationContext : String = "" pushDownPredicate : String = " " additionalOptions: JsonOptions = JsonOptions.empty, catalogId: String = null ) : DataSource

创建可从 数据目录 中的表定义读取数据的 数据源特性

  • database — 数据目录 中的数据库名称。

  • tableName — 数据目录 中的表名称。

  • redshiftTmpDir — 用于某些数据接收器的临时暂存目录。默认情况下设置为空。

  • transformationContext — 与作业书签要使用的接收器关联的转换上下文。默认情况下设置为空。

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

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

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

返回 DataSource

def getJDBCSink

def getJDBCSink( catalogConnection : String, options : JsonOptions, redshiftTmpDir : String = "", transformationContext : String = "", catalogId: String = null ) : DataSink

创建一个可向在 数据目录 中的 Connection 对象指定的 JDBC 数据库写入的 DataSinkConnection 对象具有用于连接 JDBC 接收器的信息,包括 URL、用户名、密码、VPC、子网和安全组。

  • catalogConnection — 数据目录 中包含要写入的 JDBC URL 的连接名称。

  • options — JSON 名称-值对的字符串,提供写入 JDBC 数据存储所需的附加信息。这包括:

    • dbtable(必填)— JDBC 表的名称。对于在数据库中支持架构的 JDBC 数据存储,指定 schema.table-name。如果未提供架构,则使用默认的“public”架构。以下示例显示一个指向名为 test 的架构的选项参数和数据库 test_db 中一个名为 test_table 的表。

      options = JsonOptions("""{"dbtable": "test.test_table", "database": "test_db"}""")
    • database(必填)— JDBC 数据库名称。

    • 任何其他选项直接传递到 SparkSQL JDBC 写入器。有关更多信息,请参阅 Spark 的 Redshift 数据源

  • redshiftTmpDir — 用于某些数据接收器的临时暂存目录。默认情况下设置为空。

  • transformationContext — 与作业书签要使用的接收器关联的转换上下文。默认情况下设置为空。

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

示例代码:

getJDBCSink(catalogConnection = "my-connection-name", options = JsonOptions("""{"dbtable": "my-jdbc-table", "database": "my-jdbc-db"}"""), redshiftTmpDir = "", transformationContext = "datasink4")

返回 DataSink

def getSink

def getSink( connectionType : String, options : JsonOptions, transformationContext : String = "" ) : DataSink

创建可向 Amazon Simple Storage Service (Amazon S3)、JDBC 或 AWS Glue 数据目录 等目标写入数据的 DataSink

返回 DataSink

def getSinkWithFormat

def getSinkWithFormat( connectionType : String, options : JsonOptions, transformationContext : String = "", format : String = null, formatOptions : JsonOptions = JsonOptions.empty ) : DataSink

创建可向 Amazon S3、JDBC 或 数据目录 等目标写入数据并设置要写出到目标的数据格式的 DataSink

  • connectionType — 连接的类型。请参阅 Connection Types and Options for ETL in AWS Glue

  • options — JSON 名称-值对的字符串,提供与数据接收器建立连接所需的附加信息。请参阅 Connection Types and Options for ETL in AWS Glue

  • transformationContext — 与作业书签要使用的接收器关联的转换上下文。默认情况下设置为空。

  • format — 要写出到目标的数据的格式。

  • formatOptions — JSON 名称-值对的字符串,提供用于设置目标处的数据格式的附加选项。请参阅 格式选项

返回 DataSink

def getSource

def getSource( connectionType : String, connectionOptions : JsonOptions, transformationContext : String = "" pushDownPredicate ) : DataSource

创建可从 Amazon S3、JDBC 或 AWS Glue 数据目录 等源中读取数据的 数据源特性

返回 DataSource

def getSourceWithFormat

def getSourceWithFormat( connectionType : String, options : JsonOptions, transformationContext : String = "", format : String = null, formatOptions : JsonOptions = JsonOptions.empty ) : DataSource

创建一个 数据源特性,以从 Amazon S3、JDBC 或 AWS Glue 数据目录 等源读取数据并设置源中所存储数据的格式。

  • connectionType — 数据源的类型。请参阅 Connection Types and Options for ETL in AWS Glue

  • options — JSON 名称-值对的字符串,提供与数据源建立连接所需的附加信息。请参阅 Connection Types and Options for ETL in AWS Glue

  • transformationContext — 与作业书签要使用的接收器关联的转换上下文。默认情况下设置为空。

  • format — 源中所存储数据的格式。当 connectionType 为“s3”时,您也可以指定 format。可以是以下值之一:“avro”、“csv”、“grokLog”、“ion”、“json”、“xml”、“parquet”或“orc”。

  • formatOptions — JSON 名称-值对的字符串,提供用于在源中分析数据的附加选项。请参阅 格式选项

返回 DataSource

def getSparkSession

def getSparkSession : SparkSession

获取与此 GlueContext 关联的 SparkSession 对象。使用此 SparkSession 对象可注册要用于从 DynamicFrame 创建的 DataFrame 的表和 UDF。

返回 SparkSession。

def this

def this( sc : SparkContext, minPartitions : Int, targetPartitions : Int )

使用指定的 SparkContext、最小分区数和目标分区数创建 GlueContext 对象。

  • sc — SparkContext

  • minPartitions — 最小分区数。

  • targetPartitions — 目标分区数。

返回 GlueContext

def this

def this( sc : SparkContext )

使用提供的 GlueContext 创建一个 SparkContext 对象。将最小分区数设置为 10,将目标分区数设置为 20。

  • sc — SparkContext

返回 GlueContext

def this

def this( sparkContext : JavaSparkContext )

使用提供的 GlueContext 创建一个 JavaSparkContext 对象。将最小分区数设置为 10,将目标分区数设置为 20。

  • sparkContext — JavaSparkContext

返回 GlueContext