

# Clase DynamicFrameWriter
<a name="aws-glue-api-crawler-pyspark-extensions-dynamic-frame-writer"></a>



##   Métodos
<a name="aws-glue-api-crawler-pyspark-extensions-dynamic-frame-writer-_methods"></a>
+ [\$1\$1init\$1\$1](#aws-glue-api-crawler-pyspark-extensions-dynamic-frame-writer-__init__)
+ [from\$1options](#aws-glue-api-crawler-pyspark-extensions-dynamic-frame-writer-from_options)
+ [from\$1catalog](#aws-glue-api-crawler-pyspark-extensions-dynamic-frame-writer-from_catalog)
+ [from\$1jdbc\$1conf](#aws-glue-api-crawler-pyspark-extensions-dynamic-frame-writer-from_jdbc_conf)

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

**`__init__(glue_context)`**
+ `glue_context`: el [Clase GlueContext](aws-glue-api-crawler-pyspark-extensions-glue-context.md) que se va a utilizar.

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

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

Escribe un `DynamicFrame` con la conexión y el formato especificados.
+ `frame` – el `DynamicFrame` que se va a escribir.
+ `connection_type`: el tipo de conexión. Entre los valores válidos se incluyen: `s3`, `mysql`, `postgresql`, `redshift`, `sqlserver` y `oracle`.
+ `connection_options`: opciones de conexión, como la tabla de rutas y bases de datos (opcional). Para un `connection_type` de `s3`, se define una ruta de Amazon S3.

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

  Para conexiones JDBC, deben definirse varias propiedades. Tenga en cuenta que el nombre de la base de datos debe ser parte de la URL. Opcionalmente, se puede incluir en las opciones de conexión.
**aviso**  
No se recomienda almacenar las contraseñas en el script. Considere utilizar `boto3` para recuperarlas de AWS Secrets Manager o del catálogo de datos de Glue AWS.

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

  La propiedad `dbtable` es el nombre de la tabla de JDBC. Para almacenes de datos de JDBC que admiten esquemas dentro de una base de datos, especifique `schema.table-name`. Si no se ha proporcionado un esquema, se usa el esquema “public” predeterminado.

  Para obtener más información, consulte [Tipos de conexión y opciones para ETL en AWS Glue para Spark](aws-glue-programming-etl-connect.md).
+ `format`: una especificación de formato (opcional). Se utiliza para Amazon Simple Storage Service (Amazon S3) o una conexión de AWS Glue que admite diversos formatos. Consulte en [Opciones de formato de datos para las entradas y las salidas en AWS Glue para Spark](aws-glue-programming-etl-format.md) los formatos que se admiten.
+ `format_options`: opciones del formato especificado. Consulte en [Opciones de formato de datos para las entradas y las salidas en AWS Glue para Spark](aws-glue-programming-etl-format.md) los formatos que se admiten.
+ `transformation_ctx`: contexto de transformación que se va a utilizar (opcional).

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

**`from_catalog(frame, name_space, table_name, redshift_tmp_dir="", transformation_ctx="")`**

Escribe y devuelve un `DynamicFrame` con la base de datos de catálogos especificada y un nombre de tabla.
+ `frame` – el `DynamicFrame` que se va a escribir.
+ `name_space`: la base de datos que se va a utilizar.
+ `table_name`: el `table_name` que se va a utilizar.
+ `redshift_tmp_dir`: directorio provisional de Amazon Redshift que se va a utilizar (opcional).
+ `transformation_ctx`: contexto de transformación que se va a utilizar (opcional).
+ `additional_options` – opciones adicionales para AWS Glue. 

  Para escribir en tablas que se rigen por Lake Formation, puede utilizar estas opciones adicionales:
  + `transactionId` (cadena): ID de transacción en el que se debe escribir en la tabla regida. Esta transacción no se puede confirmar ni anular, de lo contrario, se producirán errores en la escritura.
  + `callDeleteObjectsOnCancel ` (booleano, opcional): si se configura en `true` (el valor predeterminado), AWS Glue llama automáticamente a la API `DeleteObjectsOnCancel` después de escribir el objeto en Amazon S3. Para obtener más información, consulte [DeleteObjectsOnCancel](https://docs.aws.amazon.com/lake-formation/latest/dg/aws-lake-formation-api-transactions-api.html#aws-lake-formation-api-transactions-api-DeleteObjectsOnCancel) en la *Guía para desarrolladores de AWS Lake Formation*.  
**Example Ejemplo: Escribir en una tabla regida en Lake Formation**  

  ```
  txId = glueContext.start_transaction(read_only=False)
  glueContext.write_dynamic_frame.from_catalog(
      frame=dyf,
      database = db, 
      table_name = tbl, 
      transformation_ctx = "datasource0", 
      additional_options={"transactionId":txId})
  ...
  glueContext.commit_transaction(txId)
  ```

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

**`from_jdbc_conf(frame, catalog_connection, connection_options={}, redshift_tmp_dir = "", transformation_ctx="")`**

Escribe un `DynamicFrame` mediante la información de la conexión de JDBC especificada.
+ `frame` – el `DynamicFrame` que se va a escribir.
+ `catalog_connection`: conexión al catálogo que se va a utilizar.
+ `connection_options`: opciones de conexión, como la tabla de rutas y bases de datos (opcional).
+ `redshift_tmp_dir`: directorio provisional de Amazon Redshift que se va a utilizar (opcional).
+ `transformation_ctx`: contexto de transformación que se va a utilizar (opcional).

## Ejemplo de write\$1dynamic\$1frame
<a name="pyspark-WriteDynamicFrame-examples"></a>

En este ejemplo se escribe la salida localmente mediante un `connection_type` de S3 con un argumento de ruta POSIX en `connection_options`, que permite escribir en almacenamiento local.

```
glueContext.write_dynamic_frame.from_options(\
frame = dyf_splitFields,\
connection_options = {'path': '/home/glue/GlueLocalOutput/'},\
connection_type = 's3',\
format = 'json')
```