

# Classe GlueContext
<a name="aws-glue-api-crawler-pyspark-extensions-glue-context"></a>

Encapsula o objeto [SparkContext](https://spark.apache.org/docs/latest/api/java/org/apache/spark/SparkContext.html) do Apache SparkSQL e, portanto, fornece mecanismos para interagir com a plataforma do Apache Spark.

## \$1\$1init\$1\$1
<a name="aws-glue-api-crawler-pyspark-extensions-glue-context-__init__"></a>

**`__init__(sparkContext)`**
+ `sparkContext` – O contexto do Apache Spark a ser usado.

## Criando
<a name="aws-glue-api-crawler-pyspark-extensions-glue-context-_creating"></a>
+ [\$1\$1init\$1\$1](#aws-glue-api-crawler-pyspark-extensions-glue-context-__init__)
+ [getSource](#aws-glue-api-crawler-pyspark-extensions-glue-context-get-source)
+ [create\$1dynamic\$1frame\$1from\$1rdd](#aws-glue-api-crawler-pyspark-extensions-glue-context-create_dynamic_frame_from_rdd)
+ [create\$1dynamic\$1frame\$1from\$1catalog](#aws-glue-api-crawler-pyspark-extensions-glue-context-create_dynamic_frame_from_catalog)
+ [create\$1dynamic\$1frame\$1from\$1options](#aws-glue-api-crawler-pyspark-extensions-glue-context-create_dynamic_frame_from_options)
+ [create\$1sample\$1dynamic\$1frame\$1from\$1catalog](#aws-glue-api-crawler-pyspark-extensions-glue-context-create-sample-dynamic-frame-from-catalog)
+ [create\$1sample\$1dynamic\$1frame\$1from\$1options](#aws-glue-api-crawler-pyspark-extensions-glue-context-create-sample-dynamic-frame-from-options)
+ [add\$1ingestion\$1time\$1columns](#aws-glue-api-crawler-pyspark-extensions-glue-context-add-ingestion-time-columns)
+ [create\$1data\$1frame\$1from\$1catalog](#aws-glue-api-crawler-pyspark-extensions-glue-context-create-dataframe-from-catalog)
+ [create\$1data\$1frame\$1from\$1options](#aws-glue-api-crawler-pyspark-extensions-glue-context-create-dataframe-from-options)
+ [forEachBatch](#aws-glue-api-crawler-pyspark-extensions-glue-context-forEachBatch)

## getSource
<a name="aws-glue-api-crawler-pyspark-extensions-glue-context-get-source"></a>

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

Cria um objeto `DataSource` que pode ser usado para ler `DynamicFrames` a partir de fontes externas.
+ `connection_type`: o tipo de conexão a ser usado, por exemplo, Amazon Simple Storage Service (Amazon S3), Amazon Redshift e JDBC. Os valores válidos incluem `s3`, `mysql`, `postgresql`, `redshift`, `sqlserver`, `oracle` e `dynamodb`.
+ `transformation_ctx` – O contexto de transformação a ser usado (opcional).
+ `options` – Uma coleção de pares nome-valor opcionais. Para obter mais informações, consulte [Tipos e opções de conexão para ETL no AWS Glue para Spark](aws-glue-programming-etl-connect.md).

Veja a seguir um exemplo de uso do `getSource`.

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

## create\$1dynamic\$1frame\$1from\$1rdd
<a name="aws-glue-api-crawler-pyspark-extensions-glue-context-create_dynamic_frame_from_rdd"></a>

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

Retorna um `DynamicFrame` que é criado a partir de um conjunto de dados resiliente distribuído (RDD) do Apache Spark.
+ `data` – A fonte de dados a ser usada.
+ `name` – O nome dos dados a serem usados.
+ `schema` – O esquema a ser usado (opcional).
+ `sample_ratio` – A proporção da amostra a ser usada (opcional).
+ `transformation_ctx` – O contexto de transformação a ser usado (opcional).

## create\$1dynamic\$1frame\$1from\$1catalog
<a name="aws-glue-api-crawler-pyspark-extensions-glue-context-create_dynamic_frame_from_catalog"></a>

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

Retorna um `DynamicFrame` que é criado usando um banco de dados do Data Catalog e o nome da tabela. Ao usar esse método, você fornece `format_options` por meio das propriedades de tabela especificadas do catálogo de dados do AWS Glue e outras opções por meio do argumento `additional_options`.
+ `Database` – O banco de dados onde a leitura será feita.
+ `table_name` – O nome da tabela onde a leitura será feita.
+ `redshift_tmp_dir`: um diretório temporário do Amazon Redshift a ser usado (opcional).
+ `transformation_ctx` – O contexto de transformação a ser usado (opcional).
+ `push_down_predicate`: filtra partições sem a necessidade de listar e ler todos os arquivos no seu conjunto de dados. Para fontes e limitações compatíveis, consulte [Otimizar leituras com pushdown no AWS Glue ETL](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-pushdown.html). Para obter mais informações, consulte [Pré-filtragem usando a aplicação de predicados](aws-glue-programming-etl-partitions.md#aws-glue-programming-etl-partitions-pushdowns).
+ `additional_options` – Uma coleção de pares nome-valor opcionais. As opções possíveis incluem as listadas em [Tipos e opções de conexão para ETL no AWS Glue para Spark](aws-glue-programming-etl-connect.md), exceto para `endpointUrl`, `streamName`, `bootstrap.servers`, `security.protocol`, `topicName`, `classification` e `delimiter`. Outra opção suportada é `catalogPartitionPredicate`:

  `catalogPartitionPredicate`: você pode transmitir uma expressão de catálogo para filtrar com base nas colunas de índice. Isso leva a filtragem para o lado do servidor. Para obter mais informações, consulte [Índices de partição do AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/partition-indexes.html). Observe que `push_down_predicate` e `catalogPartitionPredicate` usam sintaxes diferentes. O primeiro usa a sintaxe padrão do Spark SQL e o outro usa o analisador JSQL.
+ `catalog_id`: o ID do catálogo (ID da conta) do Data Catalog que está sendo acessado. Quando None (Nenhum), o ID da conta do chamador padrão é usado. 

## create\$1dynamic\$1frame\$1from\$1options
<a name="aws-glue-api-crawler-pyspark-extensions-glue-context-create_dynamic_frame_from_options"></a>

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

Retorna um `DynamicFrame` criado com a conexão e o formato especificados.
+ `connection_type`: o tipo de conexão, por exemplo, Amazon S3, Amazon Redshift e JDBC. Os valores válidos incluem `s3`, `mysql`, `postgresql`, `redshift`, `sqlserver`, `oracle` e `dynamodb`.
+ `connection_options`: opções de conexão, como caminhos e tabela de banco de dados (opcional). Para um `connection_type` do `s3`, uma lista de caminhos do Amazon S3 é definida.

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

  Para conexões JDBC, várias propriedades devem ser definidas. Observe que o nome do banco de dados deve fazer parte do URL. Ele também pode ser incluído nas opções de conexão.
**Atenção**  
Não é recomendável armazenar senhas no script. Considere usar `boto3` para recuperá-los do AWS Secrets Manager ou do catálogo de dados do AWS Glue.

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

  A propriedade `dbtable` é o nome da tabela JDBC. Para armazenamentos de dados JDBC que oferecem suporte a esquemas dentro de um banco de dados, especifique `schema.table-name`. Se um esquema não for fornecido, o esquema "público" padrão será usado.

  Para obter mais informações, consulte [Tipos e opções de conexão para ETL no AWS Glue para Spark](aws-glue-programming-etl-connect.md).
+ `format`: uma especificação de formato. É usado para uma conexão do Amazon S3 ou do AWS Glue com suporte para vários formatos. Consulte [Opções de formato de dados para entradas e saídas no AWS Glue para Spark](aws-glue-programming-etl-format.md) para obter os formatos compatíveis.
+ `format_options`: as opções de formato para o formato especificado. Consulte [Opções de formato de dados para entradas e saídas no AWS Glue para Spark](aws-glue-programming-etl-format.md) para obter os formatos compatíveis.
+ `transformation_ctx` – O contexto de transformação a ser usado (opcional).
+ `push_down_predicate`: filtra partições sem a necessidade de listar e ler todos os arquivos no seu conjunto de dados. Para fontes e limitações compatíveis, consulte [Otimizar leituras com pushdown no AWS Glue ETL](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-pushdown.html). Para obter mais informações, consulte [Pré-filtragem usando a aplicação de predicados](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-partitions.html#aws-glue-programming-etl-partitions-pushdowns).

## create\$1sample\$1dynamic\$1frame\$1from\$1catalog
<a name="aws-glue-api-crawler-pyspark-extensions-glue-context-create-sample-dynamic-frame-from-catalog"></a>

**`create_sample_dynamic_frame_from_catalog(database, table_name, num, redshift_tmp_dir, transformation_ctx = "", push_down_predicate= "", additional_options = {}, sample_options = {}, catalog_id = None)`**

Retorna um modelo `DynamicFrame` que é criado usando um banco de dados do Data Catalog e o nome da tabela. O `DynamicFrame` contém apenas os primeiros `num` registros de uma fonte de dados. 
+ `database` – O banco de dados onde a leitura será feita.
+ `table_name` – O nome da tabela onde a leitura será feita.
+ `num` - O número máximo de registros no quadro dinâmico de amostra retornado.
+ `redshift_tmp_dir`: um diretório temporário do Amazon Redshift a ser usado (opcional).
+ `transformation_ctx` – O contexto de transformação a ser usado (opcional).
+ `push_down_predicate`: filtra partições sem a necessidade de listar e ler todos os arquivos no seu conjunto de dados. Para obter mais informações, consulte [Pré-filtragem usando a aplicação de predicados](aws-glue-programming-etl-partitions.md#aws-glue-programming-etl-partitions-pushdowns).
+ `additional_options` – Uma coleção de pares nome-valor opcionais. As opções possíveis incluem as listadas em [Tipos e opções de conexão para ETL no AWS Glue para Spark](aws-glue-programming-etl-connect.md), exceto para `endpointUrl`, `streamName`, `bootstrap.servers`, `security.protocol`, `topicName`, `classification` e `delimiter`.
+ `sample_options` - Parâmetros para controlar o comportamento de amostragem (opcional). Parâmetros disponíveis atuais para fontes do Amazon S3:
  + `maxSamplePartitions` - O número máximo de partições que a amostragem lerá. O valor padrão é 10
  + `maxSampleFilesPerPartition` - O número máximo de partições que a amostragem lerá em uma partição. O valor padrão é 10

    Esses parâmetros ajudam a reduzir o tempo consumido pela listagem de arquivos. Por exemplo, suponha que o conjunto de dados tenha 1.000 partições e cada partição tenha 10 arquivos. Se você definir `maxSamplePartitions`= 10 e `maxSampleFilesPerPartition`= 10, em vez de listar todos os 10.000 arquivos, a amostragem listará e lerá apenas as primeiras 10 partições com os primeiros 10 arquivos em cada: 10\$110 = 100 arquivos no total. 
+ `catalog_id`: o ID do catálogo do Data Catalog sendo acessado (o ID da conta do Data Catalog). Definido como `None` por padrão. O `None` é definido como padrão para o ID do catálogo da conta de chamada no serviço.

## create\$1sample\$1dynamic\$1frame\$1from\$1options
<a name="aws-glue-api-crawler-pyspark-extensions-glue-context-create-sample-dynamic-frame-from-options"></a>

**`create_sample_dynamic_frame_from_options(connection_type, connection_options={}, num, sample_options={}, format=None, format_options={}, transformation_ctx = "")`**

Retorna um modelo `DynamicFrame` criado com a conexão e o formato especificados. O `DynamicFrame` contém apenas os primeiros `num` registros de uma fonte de dados. 
+ `connection_type`: o tipo de conexão, por exemplo, Amazon S3, Amazon Redshift e JDBC. Os valores válidos incluem `s3`, `mysql`, `postgresql`, `redshift`, `sqlserver`, `oracle` e `dynamodb`.
+ `connection_options`: opções de conexão, como caminhos e tabela de banco de dados (opcional). Para obter mais informações, consulte [Tipos e opções de conexão para ETL no AWS Glue para Spark](aws-glue-programming-etl-connect.md).
+ `num` - O número máximo de registros no quadro dinâmico de amostra retornado.
+ `sample_options` - Parâmetros para controlar o comportamento de amostragem (opcional). Parâmetros disponíveis atuais para fontes do Amazon S3:
  + `maxSamplePartitions` - O número máximo de partições que a amostragem lerá. O valor padrão é 10
  + `maxSampleFilesPerPartition` - O número máximo de partições que a amostragem lerá em uma partição. O valor padrão é 10

    Esses parâmetros ajudam a reduzir o tempo consumido pela listagem de arquivos. Por exemplo, suponha que o conjunto de dados tenha 1.000 partições e cada partição tenha 10 arquivos. Se você definir `maxSamplePartitions`= 10 e `maxSampleFilesPerPartition`= 10, em vez de listar todos os 10.000 arquivos, a amostragem listará e lerá apenas as primeiras 10 partições com os primeiros 10 arquivos em cada: 10\$110 = 100 arquivos no total. 
+ `format`: uma especificação de formato. É usado para uma conexão do Amazon S3 ou do AWS Glue com suporte para vários formatos. Consulte [Opções de formato de dados para entradas e saídas no AWS Glue para Spark](aws-glue-programming-etl-format.md) para obter os formatos compatíveis.
+ `format_options`: as opções de formato para o formato especificado. Consulte [Opções de formato de dados para entradas e saídas no AWS Glue para Spark](aws-glue-programming-etl-format.md) para obter os formatos compatíveis.
+ `transformation_ctx` – O contexto de transformação a ser usado (opcional).
+ `push_down_predicate`: filtra partições sem a necessidade de listar e ler todos os arquivos no seu conjunto de dados. Para obter mais informações, consulte [Pré-filtragem usando a aplicação de predicados](aws-glue-programming-etl-partitions.md#aws-glue-programming-etl-partitions-pushdowns).

## add\$1ingestion\$1time\$1columns
<a name="aws-glue-api-crawler-pyspark-extensions-glue-context-add-ingestion-time-columns"></a>

**`add_ingestion_time_columns(dataFrame, timeGranularity = "")`**

Acrescenta colunas de tempo de ingestão, como `ingest_year`, `ingest_month`, `ingest_day`, `ingest_hour`, `ingest_minute`, para o `DataFrame` de entrada. Essa função é gerada automaticamente no script gerado pelo AWS Glue, quando você especifica uma tabela do catálogo de dados com o Amazon S3 como destino. Essa função atualiza automaticamente a partição com colunas de tempo de ingestão na tabela de saída. Isso permite que os dados de saída sejam particionados automaticamente no tempo de ingestão sem exigir colunas de tempo de ingestão explícitas nos dados de entrada.
+ `dataFrame`: o `dataFrame` ao qual anexar as colunas de tempo de ingestão.
+ `timeGranularity`: o detalhamento das colunas de tempo. Os valores válidos são “`day`”, “`hour`” e “`minute`”. Por exemplo, se “`hour`” é transmitido para a função, o `dataFrame` original terá as colunas de tempo “`ingest_year`”, “`ingest_month`”, “`ingest_day`” e “`ingest_hour`” anexadas.

Retorna o quadro de dados após anexar as colunas de detealhamento de tempo.

Exemplo:

```
dynamic_frame = DynamicFrame.fromDF(glueContext.add_ingestion_time_columns(dataFrame, "hour"))
```

## create\$1data\$1frame\$1from\$1catalog
<a name="aws-glue-api-crawler-pyspark-extensions-glue-context-create-dataframe-from-catalog"></a>

**`create_data_frame_from_catalog(database, table_name, transformation_ctx = "", additional_options = {})`**

Retorna um `DataFrame` que é criado usando informações de uma tabela do Data Catalog.
+ `database`: o banco de dados do Data Catalog do qual fazer a leitura.
+ `table_name`: o nome da tabela do Data Catalog da qual fazer a leitura.
+ `transformation_ctx` – O contexto de transformação a ser usado (opcional).
+ `additional_options` – Uma coleção de pares nome-valor opcionais. As opções possíveis incluem as listadas em [Tipos e opções de conexão para ETL no AWS Glue para Spark](aws-glue-programming-etl-connect.md) para fontes de transmissão, como `startingPosition`, `maxFetchTimeInMs` e `startingOffsets`.
  + `useSparkDataSource`: quando definido como true, força o AWS Glue a usar a API do Spark Data Source nativa para ler a tabela. A API do Spark Data Source é compatível nos seguintes formatos: AVRO, binário, CSV, JSON, ORC, Parquet e texto. Em uma tabela do Data Catalog, você especifica o formato usando a propriedade `classification`. Para saber mais sobre a API do Spark Data Source, consulte a [documentação oficial do Apache Spark](https://spark.apache.org/docs/latest/sql-data-sources-load-save-functions.html).

    O uso de `create_data_frame_from_catalog` com `useSparkDataSource` apresenta os seguintes benefícios:
    + Retorna diretamente um `DataFrame` e fornece uma alternativa a `create_dynamic_frame.from_catalog().toDF()`.
    + É compatível com o controle de permissão no nível da tabela do AWS Lake Formation para formatos nativos.
    + É compatível com a leitura de formatos de data lake sem controle de permissão no nível da tabela do AWS Lake Formation. Para obter mais informações, consulte [Usar estruturas de data lake com trabalhos do AWS Glue ETL](aws-glue-programming-etl-datalake-native-frameworks.md).

    Quando você ativa o `useSparkDataSource`, pode adicionar qualquer fonte as [opções do Spark Data Source](https://spark.apache.org/docs/latest/sql-data-sources.html) ao `additional_options`, conforme necessário. AWS O Glue passa essas opções diretamente para o leitor do Spark.
  + `useCatalogSchema`: quando definido como true, o AWS Glue aplica o esquema do Data Catalog ao `DataFrame` resultante. Caso contrário, o leitor infere o esquema a partir dos dados. Quando você habilita o `useCatalogSchema`, deve também definir `useSparkDataSource` como true.

**Limitações **

Considere as seguintes limitações ao usar a opção `useSparkDataSource`:
+ Quando você usa `useSparkDataSource`, o AWS Glue cria um novo `DataFrame` em uma sessão separada do Spark que é diferente da sessão original do Spark.
+ A filtragem de partições do Spark DataFrame não funciona com os seguintes recursos do AWS Glue. 
  + [Marcadores de trabalho](monitor-continuations.md)
  + [Excluir classes de armazenamento do Amazon S](aws-glue-programming-etl-storage-classes.md#aws-glue-programming-etl-storage-classes-dynamic-frame)
  + [Predicados de partição de catálogo](aws-glue-programming-etl-partitions.md#aws-glue-programming-etl-partitions-cat-predicates)

  Para usar a filtragem de partições com esses recursos, você pode usar o predicado de pushdown do AWS Glue. Para obter mais informações, consulte [Pré-filtragem usando a aplicação de predicados](aws-glue-programming-etl-partitions.md#aws-glue-programming-etl-partitions-pushdowns). A filtragem em colunas não particionadas não é afetada.

  O script de exemplo a seguir demonstra a maneira incorreta de realizar a filtragem de partições com a opção `excludeStorageClasses`.

  ```
  // Incorrect partition filtering using Spark filter with excludeStorageClasses
  read_df = glueContext.create_data_frame.from_catalog(
      database=database_name,
      table_name=table_name,
      additional_options = {
        "useSparkDataSource": True,
        "excludeStorageClasses" : ["GLACIER", "DEEP_ARCHIVE"]
      }
  )
  
  //  Suppose year and month are partition keys.
  //  Filtering on year and month won't work, the filtered_df will still
  //  contain data with other year/month values.
  filtered_df = read_df.filter("year == '2017 and month == '04' and 'state == 'CA'")
  ```

  O exemplo de script a seguir demonstra a maneira correta de usar um predicado de pushdown para realizar a filtragem de partições com a opção `excludeStorageClasses`.

  ```
  // Correct partition filtering using the AWS Glue pushdown predicate
  // with excludeStorageClasses
  read_df = glueContext.create_data_frame.from_catalog(
      database=database_name,
      table_name=table_name,
      //  Use AWS Glue pushdown predicate to perform partition filtering
      push_down_predicate = "(year=='2017' and month=='04')"
      additional_options = {
        "useSparkDataSource": True,
        "excludeStorageClasses" : ["GLACIER", "DEEP_ARCHIVE"]
      }
  )
  
  //  Use Spark filter only on non-partitioned columns
  filtered_df = read_df.filter("state == 'CA'")
  ```

**Exemplo: criar uma tabela CSV usando o leitor de fonte de dados do Spark**

```
//  Read a CSV table with '\t' as separator
read_df = glueContext.create_data_frame.from_catalog(
    database=<database_name>,
    table_name=<table_name>,
    additional_options = {"useSparkDataSource": True,  "sep": '\t'}
)
```

## create\$1data\$1frame\$1from\$1options
<a name="aws-glue-api-crawler-pyspark-extensions-glue-context-create-dataframe-from-options"></a>

**`create_data_frame_from_options(connection_type, connection_options={}, format=None, format_options={}, transformation_ctx = "")`**

Essa API foi descontinuada. No lugar dela, use a API `getSource()`. Retorna um `DataFrame` criado com a conexão e o formato especificados. Use essa função apenas com fontes de transmissão do AWS Glue.
+ `connection_type`: o tipo de conexão de transmissão. Os valores válidos são `kinesis` e `kafka`.
+ `connection_options`: opções de conexão, que são diferentes para Kinesis e Kafka. Você pode encontrar a lista de todas as opções de conexão para cada origem dos dados de transmissão em [Tipos e opções de conexão para ETL no AWS Glue para Spark](aws-glue-programming-etl-connect.md). Observe as seguintes diferenças nas opções de conexão de transmissão:
  + As fontes de transmissão do Kinesis exigem `streamARN`, `startingPosition`, `inferSchema` e `classification`.
  + As fontes de transmissão do Kafka exigem `connectionName`, `topicName`, `startingOffsets`, `inferSchema` e `classification`.
+ `format`: uma especificação de formato. É usado para uma conexão do Amazon S3 ou do AWS Glue com suporte para vários formatos. Para obter informações sobre os formatos compatíveis, consulte . [Opções de formato de dados para entradas e saídas no AWS Glue para Spark](aws-glue-programming-etl-format.md).
+ `format_options`: as opções de formato para o formato especificado. Para obter informações sobre as opções de formato compatíveis, consulte [Opções de formato de dados para entradas e saídas no AWS Glue para Spark](aws-glue-programming-etl-format.md).
+ `transformation_ctx` – O contexto de transformação a ser usado (opcional).

Exemplo para fonte de transmissão do Amazon Kinesis:

```
kinesis_options =
   { "streamARN": "arn:aws:kinesis:us-east-2:777788889999:stream/fromOptionsStream",
     "startingPosition": "TRIM_HORIZON", 
     "inferSchema": "true", 
     "classification": "json" 
   }
data_frame_datasource0 = glueContext.create_data_frame.from_options(connection_type="kinesis", connection_options=kinesis_options)
```

Exemplo para fonte de transmissão do Kafka:

```
kafka_options =
    { "connectionName": "ConfluentKafka", 
      "topicName": "kafka-auth-topic", 
      "startingOffsets": "earliest", 
      "inferSchema": "true", 
      "classification": "json" 
    }
data_frame_datasource0 = glueContext.create_data_frame.from_options(connection_type="kafka", connection_options=kafka_options)
```

## forEachBatch
<a name="aws-glue-api-crawler-pyspark-extensions-glue-context-forEachBatch"></a>

**`forEachBatch(frame, batch_function, options)`**

Aplica a `batch_function` transmitida para cada microlote lido a partir da fonte de transmissão.
+ `frame`: o DataFrame que contém o microlote atual.
+ `batch_function`: uma função que será aplicada para cada microlote.
+ `options`: uma coleção de pares de chave-valor que contém informações sobre como processar microlotes. São necessárias as seguintes opções:
  + `windowSize`: a quantidade de tempo gasto no processamento de cada lote.
  + `checkpointLocation`: o local onde os pontos de verificação são armazenados para o trabalho de ETL de transmissão.
  + `batchMaxRetries`: o número máximo de novas tentativas deste lote em caso de falha. O valor padrão é 3. Essa opção só pode ser configurada para o Glue versão 2.0 e posterior.

**Exemplo:**

```
glueContext.forEachBatch(
    frame = data_frame_datasource0,
    batch_function = processBatch, 
    options = {
        "windowSize": "100 seconds", 
        "checkpointLocation": "s3://kafka-auth-dataplane/confluent-test/output/checkpoint/"
    }
)
   
def processBatch(data_frame, batchId):
    if (data_frame.count() > 0):
        datasource0 = DynamicFrame.fromDF(
          glueContext.add_ingestion_time_columns(data_frame, "hour"), 
          glueContext, "from_data_frame"
        )
        additionalOptions_datasink1 = {"enableUpdateCatalog": True}
        additionalOptions_datasink1["partitionKeys"] = ["ingest_yr", "ingest_mo", "ingest_day"]
        datasink1 = glueContext.write_dynamic_frame.from_catalog(
          frame = datasource0, 
          database = "tempdb", 
          table_name = "kafka-auth-table-output", 
          transformation_ctx = "datasink1", 
          additional_options = additionalOptions_datasink1
        )
```

## Trabalhar com conjuntos de dados no Amazon S3
<a name="aws-glue-api-crawler-pyspark-extensions-glue-context-_storage_layer"></a>
+ [purge\$1table](#aws-glue-api-crawler-pyspark-extensions-glue-context-purge_table)
+ [purge\$1s3\$1path](#aws-glue-api-crawler-pyspark-extensions-glue-context-purge_s3_path)
+ [transition\$1table](#aws-glue-api-crawler-pyspark-extensions-glue-context-transition_table)
+ [transition\$1s3\$1path](#aws-glue-api-crawler-pyspark-extensions-glue-context-transition_s3_path)

## purge\$1table
<a name="aws-glue-api-crawler-pyspark-extensions-glue-context-purge_table"></a>

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

Exclui arquivos do Amazon S3 para as tabelas e os bancos de dados do catálogo especificados. Se todos os arquivos em uma partição forem excluídos, essa partição também será removida do catálogo. Não oferecemos suporte à ação purge\$1table em tabelas registradas no Lake Formation.

Se quiser recuperar objetos excluídos, você pode habilitar o [versionamento de objeto](https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectVersioning.html) no bucket do Amazon S3. Quando um objeto é excluído de um bucket que não tem o versionamento de objeto habilitado, o objeto não pode ser recuperado. Para obter mais informações sobre como recuperar objetos excluídos em um bucket habilitado para versionamento, consulte [Como posso recuperar um objeto do Amazon S3 que foi excluído?](https://aws.amazon.com/premiumsupport/knowledge-center/s3-undelete-configuration/) na Central de Conhecimento do AWS Support.
+ `catalog_id`: o ID do catálogo do Data Catalog sendo acessado (o ID da conta do Data Catalog). Definido como `None` por padrão. O `None` é definido como padrão para o ID do catálogo da conta de chamada no serviço.
+ `database` – O mecanismo de banco de dados a ser usado.
+ `table_name`: o nome da tabela a ser usada.
+ `options`: opções para filtrar arquivos a serem excluídos e para geração do arquivo manifesto.
  + `retentionPeriod`: especifica um período em quantidade de horas para reter arquivos. Os arquivos mais recentes do que o período de retenção serão mantidos. Definido como 168 horas (7 dias) por padrão.
  + `partitionPredicate`: as partições que satisfazem esse predicado são excluídas. Os arquivos dentro do período de retenção nessas partições não são excluídos. Definido como `""`, vazio por padrão.
  + `excludeStorageClasses`: os arquivos com classe de armazenamento no conjunto `excludeStorageClasses` não são excluídos. O padrão é `Set()`, um conjunto vazio.
  + `manifestFilePath`: um caminho opcional para a geração do arquivo manifesto. Todos os arquivos que foram removidos com êxito são registrados no `Success.csv`, e os que falharam no `Failed.csv`
+ `transformation_ctx` – O contexto de transformação a ser usado (opcional). Usado no caminho do arquivo de manifesto.

**Example**  

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

## purge\$1s3\$1path
<a name="aws-glue-api-crawler-pyspark-extensions-glue-context-purge_s3_path"></a>

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

Exclui arquivos do caminho Amazon S3 especificado recursivamente.

Se quiser recuperar objetos excluídos, você pode habilitar o [versionamento de objeto](https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectVersioning.html) no bucket do Amazon S3. Quando um objeto é excluído de um bucket que não tem o versionamento de objeto habilitado, ele não pode ser recuperado. Para obter mais informações sobre como recuperar objetos excluídos em um bucket habilitado para versionamento, consulte [Como posso recuperar um objeto do Amazon S3 que foi excluído?](https://aws.amazon.com/premiumsupport/knowledge-center/s3-undelete-configuration/) na Central de Conhecimento do Suporte.
+ `s3_path` – o caminho no Amazon S3 dos arquivos a serem excluídos no formato `s3://<bucket>/<prefix>/`
+ `options`: opções para filtrar arquivos a serem excluídos e para geração do arquivo manifesto.
  + `retentionPeriod`: especifica um período em quantidade de horas para reter arquivos. Os arquivos mais recentes do que o período de retenção serão mantidos. Definido como 168 horas (7 dias) por padrão.
  + `excludeStorageClasses`: os arquivos com classe de armazenamento no conjunto `excludeStorageClasses` não são excluídos. O padrão é `Set()`, um conjunto vazio.
  + `manifestFilePath`: um caminho opcional para a geração do arquivo manifesto. Todos os arquivos que foram removidos com êxito são registrados no `Success.csv`, e os que falharam no `Failed.csv`
+ `transformation_ctx` – O contexto de transformação a ser usado (opcional). Usado no caminho do arquivo de manifesto.

**Example**  

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

## transition\$1table
<a name="aws-glue-api-crawler-pyspark-extensions-glue-context-transition_table"></a>

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

Move a classe de armazenamento dos arquivos armazenados no Amazon S3 para o banco de dados e tabela do catálogo especificados.

É possível fazer a transição entre duas classes de armazenamento quaisquer. Nas classes de armazenamento `GLACIER` e `DEEP_ARCHIVE` e, você pode fazer a transição para essas classes. No entanto, você usaria um `S3 RESTORE` para fazer a transição das classes de armazenamento `GLACIER` e `DEEP_ARCHIVE`.

Se você estiver executando trabalhos de ETL do AWS Glue que leiam arquivos ou partições do Amazon S3, pode excluir alguns tipos de classe de armazenamento do Amazon S3. Para obter mais informações, consulte [Excluir classes de armazenamento do Amazon S3](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-storage-classes.html).
+ `database` – O mecanismo de banco de dados a ser usado.
+ `table_name`: o nome da tabela a ser usada.
+ `transition_to`: a [classe de armazenamento do Amazon S3](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/s3/model/StorageClass.html) para onde mover.
+ `options`: opções para filtrar arquivos a serem excluídos e para geração do arquivo manifesto.
  + `retentionPeriod`: especifica um período em quantidade de horas para reter arquivos. Os arquivos mais recentes do que o período de retenção serão mantidos. Definido como 168 horas (7 dias) por padrão.
  + `partitionPredicate`: as partições que satisfazem esse predicado são movidas. Os arquivos dentro do período de retenção nessas partições não são transicionados. Definido como `""`, vazio por padrão.
  + `excludeStorageClasses`: os arquivos com classe de armazenamento no conjunto `excludeStorageClasses` não são movidos. O padrão é `Set()`, um conjunto vazio.
  + `manifestFilePath`: um caminho opcional para a geração do arquivo manifesto. Todos os arquivos que foram transicionados com êxito são registrados no `Success.csv`, e os que falharam no `Failed.csv`
  + `accountId`: o ID da conta da Amazon Web Services para executar a transformação de transição. Obrigatório para essa transformação.
  + `roleArn`: a função da AWS para executar a transformação de transição. Obrigatório para essa transformação.
+ `transformation_ctx` – O contexto de transformação a ser usado (opcional). Usado no caminho do arquivo de manifesto.
+ `catalog_id`: o ID do catálogo do Data Catalog sendo acessado (o ID da conta do Data Catalog). Definido como `None` por padrão. O `None` é definido como padrão para o ID do catálogo da conta de chamada no serviço.

**Example**  

```
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\$1s3\$1path
<a name="aws-glue-api-crawler-pyspark-extensions-glue-context-transition_s3_path"></a>

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

Move a classe de armazenamento dos arquivos no caminho do Amazon S3 especificado recursivamente.

É possível fazer a transição entre duas classes de armazenamento quaisquer. Nas classes de armazenamento `GLACIER` e `DEEP_ARCHIVE` e, você pode fazer a transição para essas classes. No entanto, você usaria um `S3 RESTORE` para fazer a transição das classes de armazenamento `GLACIER` e `DEEP_ARCHIVE`.

Se você estiver executando trabalhos de ETL do AWS Glue que leiam arquivos ou partições do Amazon S3, pode excluir alguns tipos de classe de armazenamento do Amazon S3. Para obter mais informações, consulte [Excluir classes de armazenamento do Amazon S3](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-storage-classes.html).
+ `s3_path` – o caminho no Amazon S3 dos arquivos a serem movidos no formato `s3://<bucket>/<prefix>/`
+ `transition_to`: a [classe de armazenamento do Amazon S3](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/s3/model/StorageClass.html) para onde mover.
+ `options`: opções para filtrar arquivos a serem excluídos e para geração do arquivo manifesto.
  + `retentionPeriod`: especifica um período em quantidade de horas para reter arquivos. Os arquivos mais recentes do que o período de retenção serão mantidos. Definido como 168 horas (7 dias) por padrão.
  + `partitionPredicate`: as partições que satisfazem esse predicado são movidas. Os arquivos dentro do período de retenção nessas partições não são transicionados. Definido como `""`, vazio por padrão.
  + `excludeStorageClasses`: os arquivos com classe de armazenamento no conjunto `excludeStorageClasses` não são movidos. O padrão é `Set()`, um conjunto vazio.
  + `manifestFilePath`: um caminho opcional para a geração do arquivo manifesto. Todos os arquivos que foram transicionados com êxito são registrados no `Success.csv`, e os que falharam no `Failed.csv`
  + `accountId`: o ID da conta da Amazon Web Services para executar a transformação de transição. Obrigatório para essa transformação.
  + `roleArn`: a função da AWS para executar a transformação de transição. Obrigatório para essa transformação.
+ `transformation_ctx` – O contexto de transformação a ser usado (opcional). Usado no caminho do arquivo de manifesto.

**Example**  

```
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"})
```

## Extração
<a name="aws-glue-api-crawler-pyspark-extensions-glue-context-_extracting"></a>
+ [extract\$1jdbc\$1conf](#aws-glue-api-crawler-pyspark-extensions-glue-context-extract_jdbc_conf)

## extract\$1jdbc\$1conf
<a name="aws-glue-api-crawler-pyspark-extensions-glue-context-extract_jdbc_conf"></a>

**`extract_jdbc_conf(connection_name, catalog_id = None)`**

Retorna um `dict` com chaves com as propriedades de configuração do objeto de conexão da AWS Glue no catálogo de dados.
+ `user`: o nome de usuário do banco de dados.
+ `password`: a senha do banco de dados.
+ `vendor`: especifica um fornecedor (`mysql`, `postgresql`, `oracle`, `sqlserver` etc.).
+ `enforceSSL`: uma string booleana indicando se é necessária uma conexão segura.
+ `customJDBCCert`: use um certificado de cliente específico no caminho do Amazon S3 indicado.
+ `skipCustomJDBCCertValidation`: uma string booleana indicando se o `customJDBCCert` deve ser validado por uma autoridade de certificação.
+ `customJDBCCertString`: informações adicionais sobre o certificado personalizado, específicas para o tipo de driver.
+ `url`: (obsoleto) URL do JDBC apenas com protocolo, servidor e porta.
+ `fullUrl`: URL do JDBC como inserido quando a conexão foi criada (disponível no AWS Glue versão 3.0 ou posterior).

Exemplo de recuperação de configurações do JDBC:

```
jdbc_conf = glueContext.extract_jdbc_conf(connection_name="your_glue_connection_name")
print(jdbc_conf)
>>> {'enforceSSL': 'false', 'skipCustomJDBCCertValidation': 'false', 'url': 'jdbc:mysql://myserver:3306', 'fullUrl': 'jdbc:mysql://myserver:3306/mydb', 'customJDBCCertString': '', 'user': 'admin', 'customJDBCCert': '', 'password': '1234', 'vendor': 'mysql'}
```

## Transações
<a name="aws-glue-api-pyspark-extensions-glue-context-transactions"></a>
+ [start\$1transaction](#aws-glue-api-pyspark-extensions-glue-context-start-transaction)
+ [commit\$1transaction](#aws-glue-api-pyspark-extensions-glue-context-commit-transaction)
+ [cancel\$1transaction](#aws-glue-api-pyspark-extensions-glue-cancel-transaction)

## start\$1transaction
<a name="aws-glue-api-pyspark-extensions-glue-context-start-transaction"></a>

**`start_transaction(read_only)`**

Iniciar uma nova transação. Chama internamente a API [startTransaction](https://docs.aws.amazon.com/lake-formation/latest/dg/aws-lake-formation-api-aws-lake-formation-api-transactions.html#aws-lake-formation-api-aws-lake-formation-api-transactions-StartTransaction) do Lake Formation.
+ `read_only`: (booleano) indica se esta transação deve ser somente de leitura ou de leitura e gravação. As gravações feitas usando um ID de transação somente de leitura serão rejeitadas. As transações somente de leitura não precisam ser confirmadas.

Retorna o ID da transação.

## commit\$1transaction
<a name="aws-glue-api-pyspark-extensions-glue-context-commit-transaction"></a>

**`commit_transaction(transaction_id, wait_for_commit = True)`**

Tenta confirmar a transação especificada. `commit_transaction` pode retornar antes que a transação tenha terminado de confirmar. Chama internamente a API [commitTransaction](https://docs.aws.amazon.com/lake-formation/latest/dg/aws-lake-formation-api-aws-lake-formation-api-transactions.html#aws-lake-formation-api-aws-lake-formation-api-transactions-CommitTransaction) do Lake Formation.
+ `transaction_id `: (string) a transação a ser confirmada.
+ `wait_for_commit`: (booleano) Determina se `commit_transaction` retorna imediatamente. O valor padrão é true. Se for falso, `commit_transaction` sonda e aguarda até que a transação seja confirmada. A quantidade de tempo de espera é restrita a 1 minuto usando recuo exponencial com um máximo de 6 tentativas.

Retorna um booleano para indicar se a confirmação foi feita ou não. 

## cancel\$1transaction
<a name="aws-glue-api-pyspark-extensions-glue-cancel-transaction"></a>

**`cancel_transaction(transaction_id)`**

Tenta cancelar a transação especificada. Retorna uma exceção `TransactionCommittedException` se a transação tiver sido confirmada anteriormente. Chama internamente a API [cancelTransaction](https://docs.aws.amazon.com/lake-formation/latest/dg/aws-lake-formation-api-aws-lake-formation-api-transactions.html#aws-lake-formation-api-aws-lake-formation-api-transactions-CancelTransaction) do Lake Formation.
+ `transaction_id`: (string) a transação a ser cancelada.

## Writing
<a name="aws-glue-api-crawler-pyspark-extensions-glue-context-_writing"></a>
+ [getSink](#aws-glue-api-crawler-pyspark-extensions-glue-context-get-sink)
+ [write\$1dynamic\$1frame\$1from\$1options](#aws-glue-api-crawler-pyspark-extensions-glue-context-write_dynamic_frame_from_options)
+ [write\$1from\$1options](#aws-glue-api-crawler-pyspark-extensions-glue-context-write_from_options)
+ [write\$1dynamic\$1frame\$1from\$1catalog](#aws-glue-api-crawler-pyspark-extensions-glue-context-write_dynamic_frame_from_catalog)
+ [write\$1data\$1frame\$1from\$1catalog](#aws-glue-api-crawler-pyspark-extensions-glue-context-write_data_frame_from_catalog)
+ [write\$1dynamic\$1frame\$1from\$1jdbc\$1conf](#aws-glue-api-crawler-pyspark-extensions-glue-context-write_dynamic_frame_from_jdbc_conf)
+ [write\$1from\$1jdbc\$1conf](#aws-glue-api-crawler-pyspark-extensions-glue-context-write_from_jdbc_conf)

## getSink
<a name="aws-glue-api-crawler-pyspark-extensions-glue-context-get-sink"></a>

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

Obtém um objeto `DataSink` que pode ser usado para escrever `DynamicFrames` em fontes externas. Verifique o `format` do SparkSQL primeiro para garantir a obtenção do depósito esperado.
+ `connection_type`: o tipo de conexão a ser usado, como Amazon S3, Amazon Redshift e JDBC. Os valores válidos incluem `s3`, `mysql`, `postgresql`, `redshift`, `sqlserver`, `oracle`, `kinesis` e `kafka`.
+ `format` – o formato do SparkSQL a ser usado (opcional).
+ `transformation_ctx` – O contexto de transformação a ser usado (opcional).
+ `options`: uma coleção de pares nome-valor usados para especificar as opções de conexão. Alguns dos valores possíveis são:
  + `user` e `password`:pPara autorização
  + `url`:o endpoint para o datastore
  + `dbtable`: o nome da tabela de destino.
  + `bulkSize`: grau de paralelismo para operações de inserção

As opções que você pode especificar dependem do tipo de conexão. Consulte [Tipos e opções de conexão para ETL no AWS Glue para Spark](aws-glue-programming-etl-connect.md) para obter valores e exemplos adicionais.

Exemplo:

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

## write\$1dynamic\$1frame\$1from\$1options
<a name="aws-glue-api-crawler-pyspark-extensions-glue-context-write_dynamic_frame_from_options"></a>

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

Escreve e retorna um `DynamicFrame` usando a conexão e o formato especificados.
+ `frame` – O `DynamicFrame` a ser escrito.
+ `connection_type`: o tipo de conexão, por exemplo, Amazon S3, Amazon Redshift e JDBC. Os valores válidos incluem `s3`, `mysql`, `postgresql`, `redshift`, `sqlserver`, `oracle`, `kinesis` e `kafka`.
+ `connection_options` – Opções de conexão, como caminho e tabela de banco de dados (opcional). Para um `connection_type` do `s3`, um caminho do Amazon S3 é definido.

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

  Para conexões JDBC, várias propriedades devem ser definidas. Observe que o nome do banco de dados deve fazer parte do URL. Ele também pode ser incluído nas opções de conexão.
**Atenção**  
Não é recomendável armazenar senhas no script. Considere usar `boto3` para recuperá-los do AWS Secrets Manager ou do catálogo de dados do AWS Glue.

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

  A propriedade `dbtable` é o nome da tabela JDBC. Para armazenamentos de dados JDBC que oferecem suporte a esquemas dentro de um banco de dados, especifique `schema.table-name`. Se um esquema não for fornecido, o esquema "público" padrão será usado.

  Para obter mais informações, consulte [Tipos e opções de conexão para ETL no AWS Glue para Spark](aws-glue-programming-etl-connect.md).
+ `format`: uma especificação de formato. É usado para uma conexão do Amazon S3 ou do AWS Glue com suporte para vários formatos. Consulte [Opções de formato de dados para entradas e saídas no AWS Glue para Spark](aws-glue-programming-etl-format.md) para obter os formatos compatíveis.
+ `format_options`: as opções de formato para o formato especificado. Consulte [Opções de formato de dados para entradas e saídas no AWS Glue para Spark](aws-glue-programming-etl-format.md) para obter os formatos compatíveis.
+ `transformation_ctx` – Um contexto de transformação a ser usado (opcional).

## write\$1from\$1options
<a name="aws-glue-api-crawler-pyspark-extensions-glue-context-write_from_options"></a>

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

Escreve e retorna o código `DynamicFrame` ou `DynamicFrameCollection` criado com as informações de conexão e formato especificadas.
+ `frame_or_dfc` – O código `DynamicFrame` ou `DynamicFrameCollection` a ser escrito.
+ `connection_type`: o tipo de conexão, por exemplo, Amazon S3, Amazon Redshift e JDBC. Os valores válidos incluem `s3`, `mysql`, `postgresql`, `redshift`, `sqlserver` e `oracle`.
+ `connection_options` – Opções de conexão, como caminho e tabela de banco de dados (opcional). Para um `connection_type` do `s3`, um caminho do Amazon S3 é definido.

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

  Para conexões JDBC, várias propriedades devem ser definidas. Observe que o nome do banco de dados deve fazer parte do URL. Ele também pode ser incluído nas opções de conexão.
**Atenção**  
Não é recomendável armazenar senhas no script. Considere usar `boto3` para recuperá-los do AWS Secrets Manager ou do catálogo de dados do AWS Glue.

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

  A propriedade `dbtable` é o nome da tabela JDBC. Para armazenamentos de dados JDBC que oferecem suporte a esquemas dentro de um banco de dados, especifique `schema.table-name`. Se um esquema não for fornecido, o esquema "público" padrão será usado.

  Para obter mais informações, consulte [Tipos e opções de conexão para ETL no AWS Glue para Spark](aws-glue-programming-etl-connect.md).
+ `format`: uma especificação de formato. É usado para uma conexão do Amazon S3 ou do AWS Glue com suporte para vários formatos. Consulte [Opções de formato de dados para entradas e saídas no AWS Glue para Spark](aws-glue-programming-etl-format.md) para obter os formatos compatíveis.
+ `format_options`: as opções de formato para o formato especificado. Consulte [Opções de formato de dados para entradas e saídas no AWS Glue para Spark](aws-glue-programming-etl-format.md) para obter os formatos compatíveis.
+ `transformation_ctx` – Um contexto de transformação a ser usado (opcional).

## write\$1dynamic\$1frame\$1from\$1catalog
<a name="aws-glue-api-crawler-pyspark-extensions-glue-context-write_dynamic_frame_from_catalog"></a>

**`write_dynamic_frame_from_catalog(frame, database, table_name, redshift_tmp_dir, transformation_ctx = "", additional_options = {}, catalog_id = None)`**

Grava e retorna um `DynamicFrame` usando um banco de dados e uma tabela do Data Catalog.
+ `frame` – O `DynamicFrame` a ser escrito.
+ `Database`: o banco de dados do Data Catalog que contém a tabela.
+ `table_name`: o nome da tabela do Data Catalog associada ao destino.
+ `redshift_tmp_dir`: um diretório temporário do Amazon RedShift a ser usado (opcional).
+ `transformation_ctx` – O contexto de transformação a ser usado (opcional).
+ `additional_options` – Uma coleção de pares nome-valor opcionais.
+ `catalog_id`: o ID do catálogo (ID da conta) do Data Catalog que está sendo acessado. Quando None (Nenhum), o ID da conta do chamador padrão é usado. 

## write\$1data\$1frame\$1from\$1catalog
<a name="aws-glue-api-crawler-pyspark-extensions-glue-context-write_data_frame_from_catalog"></a>

**`write_data_frame_from_catalog(frame, database, table_name, redshift_tmp_dir, transformation_ctx = "", additional_options = {}, catalog_id = None)`**

Grava e retorna um `DataFrame` usando um banco de dados e uma tabela do Data Catalog. Esse método é compatível com a gravação nos formatos de data lake (Hudi, Iceberg e Delta Lake). Para obter mais informações, consulte [Usar estruturas de data lake com trabalhos do AWS Glue ETL](aws-glue-programming-etl-datalake-native-frameworks.md).
+ `frame` – O `DataFrame` a ser escrito.
+ `Database`: o banco de dados do Data Catalog que contém a tabela.
+ `table_name`: o nome da tabela do Data Catalog associada ao destino.
+ `redshift_tmp_dir`: um diretório temporário do Amazon Redshift a ser usado (opcional).
+ `transformation_ctx` – O contexto de transformação a ser usado (opcional).
+ `additional_options` – Uma coleção de pares nome-valor opcionais.
  + `useSparkDataSink`: quando definido como true, força o AWS Glue a usar a API Spark Data Sink nativa para gravar na tabela. Ao habilitar esta opção, você pode também adicionar qualquer uma das [opções de Spark Data Source](https://spark.apache.org/docs/latest/sql-data-sources.html) como `additional_options` conforme necessário. AWS O Glue passa essas opções diretamente para o gravador do Spark.
+ `catalog_id`: o ID do catálogo (ID da conta) do Data Catalog que está sendo acessado. Quando você não especifica um valor, será usado o ID padrão da conta do chamador. 

**Limitações**

Considere as seguintes limitações ao usar a opção `useSparkDataSink`:
+ A opção [`enableUpdateCatalog`](update-from-job.md) não é compatível quando você usa a opção `useSparkDataSink`.

**Exemplo: gravação em uma tabela Hudi usando o gravador do Spark Data Source**

```
hudi_options = {
    'useSparkDataSink': True,
    'hoodie.table.name': <table_name>,
    'hoodie.datasource.write.storage.type': 'COPY_ON_WRITE',
    'hoodie.datasource.write.recordkey.field': 'product_id',
    'hoodie.datasource.write.table.name': <table_name>,
    'hoodie.datasource.write.operation': 'upsert',
    'hoodie.datasource.write.precombine.field': 'updated_at',
    'hoodie.datasource.write.hive_style_partitioning': 'true',
    'hoodie.upsert.shuffle.parallelism': 2,
    'hoodie.insert.shuffle.parallelism': 2,
    'hoodie.datasource.hive_sync.enable': 'true',
    'hoodie.datasource.hive_sync.database': <database_name>,
    'hoodie.datasource.hive_sync.table': <table_name>,
    'hoodie.datasource.hive_sync.use_jdbc': 'false',
    'hoodie.datasource.hive_sync.mode': 'hms'}

glueContext.write_data_frame.from_catalog(
    frame = <df_product_inserts>,
    database = <database_name>,
    table_name = <table_name>,
    additional_options = hudi_options
)
```

## write\$1dynamic\$1frame\$1from\$1jdbc\$1conf
<a name="aws-glue-api-crawler-pyspark-extensions-glue-context-write_dynamic_frame_from_jdbc_conf"></a>

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

Escreve e retorna um `DynamicFrame` usando as informações de conexão JDBC especificadas.
+ `frame` – O `DynamicFrame` a ser escrito.
+ `catalog_connection` – Uma conexão de catálogo a ser usada.
+ `connection_options` – Opções de conexão, como caminho e tabela de banco de dados (opcional). Para obter mais informações, consulte [Tipos e opções de conexão para ETL no AWS Glue para Spark](aws-glue-programming-etl-connect.md).
+ `redshift_tmp_dir`: um diretório temporário do Amazon RedShift a ser usado (opcional).
+ `transformation_ctx` – Um contexto de transformação a ser usado (opcional).
+ `catalog_id`: o ID do catálogo (ID da conta) do Data Catalog que está sendo acessado. Quando None (Nenhum), o ID da conta do chamador padrão é usado. 

## write\$1from\$1jdbc\$1conf
<a name="aws-glue-api-crawler-pyspark-extensions-glue-context-write_from_jdbc_conf"></a>

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

Escreve e retorna um código `DynamicFrame` ou `DynamicFrameCollection` usando as informações de conexão JDBC especificadas.
+ `frame_or_dfc` – O código `DynamicFrame` ou `DynamicFrameCollection` a ser escrito.
+ `catalog_connection` – Uma conexão de catálogo a ser usada.
+ `connection_options` – Opções de conexão, como caminho e tabela de banco de dados (opcional). Para obter mais informações, consulte [Tipos e opções de conexão para ETL no AWS Glue para Spark](aws-glue-programming-etl-connect.md).
+ `redshift_tmp_dir`: um diretório temporário do Amazon RedShift a ser usado (opcional).
+ `transformation_ctx` – Um contexto de transformação a ser usado (opcional).
+ `catalog_id`: o ID do catálogo (ID da conta) do Data Catalog que está sendo acessado. Quando None (Nenhum), o ID da conta do chamador padrão é usado. 