

# Trabajos ETL de streaming en AWS Glue
<a name="add-job-streaming"></a>

Puede crear trabajos de extracción, transformación y carga (ETL) de streaming que se ejecuten continuamente, consuman datos de orígenes de streaming como Amazon Kinesis Data Streams, Apache Kafka y Amazon Managed Streaming for Apache Kafka (Amazon MSK). Los trabajos limpian y transforman los datos y, a continuación, cargan los resultados en los lagos de datos de Amazon S3 o en los almacenes de datos JDBC.

Además, puede generar datos para los flujos de Amazon Kinesis Data Streams. Esta característica solo está disponible al escribir scripts de AWS Glue. Para obtener más información, consulte [Conexión de Kinesis](aws-glue-programming-etl-connect-kinesis-home.md). 

De forma predeterminada, AWS Glue procesa y escribe datos en periodos de 100 segundos. Esto permite que los datos se procesen de forma eficiente y permite que las agregaciones se realicen en los datos que lleguen más tarde de lo previsto. Puede modificar este tamaño de ventana para aumentar la puntualidad o la precisión de la agregación. Los trabajos de streaming de AWS Glue utilizan puntos de control en lugar de marcadores de trabajo para rastrear los datos leídos.

**nota**  
AWS Glue factura por hora para trabajos de ETL de streaming mientras se están ejecutando.

Este video analiza los desafíos de costos de ETL de streaming y las funciones de ahorro de costos en AWS Glue.

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/6ggTFOtfUxU/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/6ggTFOtfUxU)


La creación de un trabajo ETL de streaming consta de los siguientes pasos:

1. Para un origen de streaming de Apache Kafka, cree una conexión de AWS Glue al origen de Kafka o al clúster de Amazon MSK.

1. Cree manualmente una tabla del Catálogo de datos para el origen de streaming.

1. Cree un trabajo ETL para el origen de datos de streaming. Defina propiedades de trabajo específicas de streaming y proporcione su propio script o también puede modificar el script generado.

Para obtener más información, consulte [ETL de streaming en AWS Glue](components-overview.md#streaming-etl-intro).

Al crear un trabajo de ETL de streaming para Amazon Kinesis Data Streams, no es necesario crear una conexión de AWS Glue. Sin embargo, si hay una conexión asociada al trabajo de ETL de streaming de AWS Glue que tenga Kinesis Data Streams como origen, se requiere un punto de enlace de la nube privada virtual (VPC) para Kinesis. Para obtener más información, consulte [Creación de un punto de conexión de interfaz](https://docs.aws.amazon.com/vpc/latest/userguide/vpce-interface.html#create-interface-endpoint) en la *Guía del usuario de Amazon VPC*. Al especificar un flujo de Amazon Kinesis Data Streams en otra cuenta, debe configurar los roles y las políticas para permitir el acceso entre cuentas. Para obtener más información, consulte [Ejemplo: leer desde un flujo de Kinesis en una cuenta diferente](https://docs.aws.amazon.com/kinesisanalytics/latest/java/examples-cross.html).

AWS GlueLos trabajos de ETL de streaming en pueden detectar automáticamente datos comprimidos, descomprimir de forma transparente los datos de streaming, realizar las transformaciones habituales en el origen de entrada y cargarlos en el almacén de salida. 

AWS Glue admite la descompresión automática para los siguientes tipos de compresión dado el formato de entrada:


| Tipo de compresión | Archivo Avro | Datos de Avro | JSON | CSV | Grok | 
| --- | --- | --- | --- | --- | --- | 
| BZIP2 | Sí | Sí | Sí | Sí | Sí | 
| GZIP | No | Sí | Sí | Sí | Sí | 
| SNAPPY | Sí (Snappy sin formato) | Sí (con encuadre de Snappy) | Sí (con encuadre de Snappy) | Sí (con encuadre de Snappy) | Sí (con encuadre de Snappy) | 
| XZ | Sí | Sí | Sí | Sí | Sí | 
| ZSTD | Sí | No | No | No | No | 
| DEFLATE | Sí | Sí | Sí | Sí | Sí | 

**Topics**
+ [Creación de una conexión de AWS Glue para un flujo de datos Apache Kafka](#create-conn-streaming)
+ [Creación de una tabla del Catálogo de datos para un origen de streaming](#create-table-streaming)
+ [Notas y restricciones para orígenes de streaming de Avro](#streaming-avro-notes)
+ [Aplicación de patrones Grok a orígenes de streaming](#create-table-streaming-grok)
+ [Definición de propiedades de trabajo para un trabajo ETL de streaming](#create-job-streaming-properties)
+ [Notas y restricciones de ETL de streaming](#create-job-streaming-restrictions)

## Creación de una conexión de AWS Glue para un flujo de datos Apache Kafka
<a name="create-conn-streaming"></a>

Para leer en una transmisión de Apache Kafka, debe crear una conexión de AWS Glue. 

**Para crear una conexión de AWS Glue para un origen de Kafka (consola)**

1. Abra la consola de AWS Glue en [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/).

1. En el panel de navegación, en **Data catalog** (Catálogo de datos), elija **Connections (Conexiones)**.

1. Elija **Agregar conexión** y, en la página **Configurar las propiedades de la conexión** escriba un nombre de conexión.
**nota**  
Para obtener más información acerca de cómo especificar propiedades de conexión, consulte [Propiedades de conexión de AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-catalog-connections).

1. En **Tipo de conexión**, elija **Kafka**.

1. Para **Kafka bootstrap servers URLs (URL de servidores de arranque Kafka)**, ingrese el host y el número de puerto de los agentes de arranque para su clúster de Amazon MSK o Apache Kafka. Utilice sólo los puntos de enlace de Transport Layer Security (TLS) para establecer la conexión inicial con el clúster de Kafka. No se admiten puntos de enlace de texto no cifrado.

   A continuación se ofrece una lista de pares de nombre de host y número de puerto para un clúster de Amazon MSK a modo de ejemplo.

   ```
   myserver1.kafka.us-east-1.amazonaws.com:9094,myserver2.kafka.us-east-1.amazonaws.com:9094,
   myserver3.kafka.us-east-1.amazonaws.com:9094
   ```

   Para obtener más información sobre cómo obtener la información del agente de arranque, consulte [Obtener los agentes de arranque para un clúster de Amazon MSK](https://docs.aws.amazon.com/msk/latest/developerguide/msk-get-bootstrap-brokers.html) en la *Guía para desarrolladores de Amazon Managed Streaming for Apache Kafka*. 

1. Si desea una conexión segura al origen de datos de Kafka, seleccione **Require SSL connection (Solicitar conexión SSL)**, y para **Kafka private CA certificate location (Ubicación del certificado de CA privado de Kafka)**, ingrese una ruta válida de Amazon S3 a un certificado SSL personalizado.

   Para una conexión SSL a Kafka autoadministrado, el certificado personalizado es obligatorio. Es opcional para Amazon MSK.

   Para obtener más información sobre cómo especificar un certificado personalizado para Kafka, consulte [AWS GluePropiedades de las conexiones SSL de](connection-properties.md#connection-properties-SSL).

1. Use AWS Glue Studio o CLI AWS para especificar un método de autenticación de cliente Kafka. Para obtener acceso a AWS Glue Studio, seleccione **AWS Glue** en el menú **ETL** en el panel de navegación izquierdo.

   Para obtener más información acerca de los métodos de autenticación de cliente Kafka, consulte [Propiedades de conexión de AWS Glue Kafka para autenticación de clientes](#connection-properties-kafka-client-auth).

1. Si lo desea, escriba una descripción y, a continuación, elija **Next (Siguiente)**.

1. Para un clúster de Amazon MSK, especifique la nube virtual privada (VPC), su subred y el grupo de seguridad. La información de la VPC es opcional para Kafka autoadministrado.

1. Elija **Next (Siguiente)** para revisar todas las propiedades de conexión y, a continuación, elija **Finish (Finalizar)**.

Para obtener más información acerca de las conexiones de AWS Glue, consulte [Conexión a datos](glue-connections.md).

### Propiedades de conexión de AWS Glue Kafka para autenticación de clientes
<a name="connection-properties-kafka-client-auth"></a>

**Autenticación SASL/GSSAPI (Kerberos)**  
La elección de este método de autenticación le permitirá especificar propiedades de Kerberos.

**Keytab de Kerberos**  
Seleccione la ubicación del archivo keytab. Una keytab almacena claves a largo plazo para uno o varias entidades principales. Para obtener más información, consulte [MIT Kerberos Documentation: Keytab](https://web.mit.edu/kerberos/krb5-latest/doc/basic/keytab_def.html) (Documentación de MIT Kerberos: Keytab). 

**Archivo Kerberos krb5.conf**  
Seleccione el archivo krb5.conf. Contiene el dominio predeterminado (una red lógica, similar a un dominio, que define un grupo de sistemas bajo el mismo KDC) y la ubicación del servidor KDC. Para obtener más información, consulte [MIT Kerberos Documentation: krb5.conf](https://web.mit.edu/kerberos/krb5-1.12/doc/admin/conf_files/krb5_conf.html) (Documentación de MIT Kerberos: krb5.conf). 

**Nombre principal y nombre de servicio de Kerberos**  
Ingrese el nombre principal y el de servicio de Kerberos. Para obtener más información, consulte la [documentación de Kerberos de MIT: principal de Kerberos](https://web.mit.edu/kerberos/krb5-1.5/krb5-1.5.4/doc/krb5-user/What-is-a-Kerberos-Principal_003f.html). 

**Autenticación SASL/SCRAM-SHA-512**  
 La elección de este método de autenticación le permitirá especificar credenciales de autenticación. 

**AWS Secrets Manager**  
Busque el token en el cuadro de búsqueda mediante el nombre o ARN. 

**Nombre de usuario y contraseña del proveedor directamente**  
Busque el token en el cuadro de búsqueda mediante el nombre o ARN. 

**Autenticación SSL del cliente**  
La elección de este método de autenticación le permite seleccionar la ubicación del almacén de claves del cliente Kafka navegando por Amazon S3. Opcionalmente, puede ingresar la contraseña del almacén de claves del cliente Kafka y la contraseña de clave de cliente Kafka. 

**Autenticación de IAM**  
Este método de autenticación no requiere especificaciones adicionales y solo se aplica cuando la fuente de streaming es Kafka para MSK. 

**Autenticación de SASL/PLAIN**  
Al elegir este método de autenticación, puede especificar las credenciales de autenticación. 

## Creación de una tabla del Catálogo de datos para un origen de streaming
<a name="create-table-streaming"></a>

Es posible crear de forma manual una tabla del Catálogo de datos que especifique las propiedades del flujo de datos de origen, incluido el esquema de datos, para un origen de streaming. Esta tabla se utiliza como origen de datos para el trabajo ETL de streaming. 

Si no conoce el esquema de los datos en el flujo de datos de origen, puede crear la tabla sin un esquema. A continuación, cuando cree el trabajo de ETL de streaming, puede habilitar la función detección de esquema de AWS Glue. AWS Glue determinará el esquema a partir de los datos de streaming.

Utilice la [consola de AWS Glue](https://console.aws.amazon.com/glue/), la AWS Command Line Interface (AWS CLI) o la API de AWS Glue para crear la tabla. Para obtener información sobre cómo crear una tabla manualmente con la consola de AWS Glue, consulte [Creación de tablas](tables-described.md).

**nota**  
No puede usar la consola de AWS Lake Formation para crear la tabla; debe usar la consola de AWS Glue.

Tenga en cuenta también la siguiente información para los orígenes de streaming en formato Avro o para los datos de registro a los que puede aplicar patrones Grok. 
+ [Notas y restricciones para orígenes de streaming de Avro](#streaming-avro-notes)
+ [Aplicación de patrones Grok a orígenes de streaming](#create-table-streaming-grok)

**Topics**
+ [Origen de datos de Kinesis](#kinesis-source)
+ [Origen de datos de Kafka](#kafka-source)
+ [AWS GlueOrigen de tablas de Schema Registry](#schema-registry-table)

### Origen de datos de Kinesis
<a name="kinesis-source"></a>

Al crear la tabla, configure las siguientes propiedades de ETL de streaming (consola).

**Tipo de origen**  
**Kinesis**

**Para un origen de Kinesis en la misma cuenta:**    
**Región**  
La región de AWS en la que reside el servicio Amazon Kinesis Data Streams. La región y el nombre del flujo de Kinesis se traducen juntos a un ARN de flujo.  
Ejemplo: https://kinesis.us-east-1.amazonaws.com  
**Nombre de flujo de Kinesis**  
Nombre de la transmisión, tal como se describe en [Creación de una transmisión](https://docs.aws.amazon.com/streams/latest/dev/kinesis-using-sdk-java-create-stream.html) en la *Guía para desarrolladores de Amazon Kinesis Data Streams*.

**Para un origen de Kinesis en otra cuenta, consulte [este ejemplo](https://docs.aws.amazon.com/kinesisanalytics/latest/java/examples-cross.html) para configurar los roles y políticas que permitan el acceso entre cuentas. Configure estas opciones:**    
**ARN de flujo**  
El ARN del flujo de datos de Kinesis con el que está registrado el consumidor. Para obtener más información, consulte [Nombres de recursos de Amazon (ARNs) y espacios de nombres de servicios de AWS](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) en la *Referencia general de AWS*.  
**ARN de rol asumido**  
El nombre de recurso de Amazon (ARN) del rol que se asignará.  
**Nombre de la sesión (opcional)**  
Un identificador para la sesión del rol asumido.  
Utilice el nombre de la sesión del rol para identificar de forma única una sesión cuando el mismo rol es asumido por diferentes entidades o por diferentes razones. En escenarios entre cuentas, el nombre de la sesión del rol es visible para la cuenta que es titular del rol. Esta cuenta podrá registrar el rol. El nombre de la sesión del rol también se utiliza en el ARN de la entidad principal del rol asumido. Esto significa que las solicitudes posteriores de API entre cuentas que utilizan las credenciales de seguridad temporales expondrán el nombre de la sesión del rol a la cuenta externa en sus registros de AWS CloudTrail.

**Para configurar las propiedades de ETL de streaming para Amazon Kinesis Data Streams (API de AWS Glue o AWS CLI)**
+ Para configurar las propiedades de ETL de streaming para un origen de Kinesis en la misma cuenta, especifique los parámetros `streamName` y `endpointUrl` en la estructura `StorageDescriptor` de la operación de la API `CreateTable` o el comando de la CLI `create_table`.

  ```
  "StorageDescriptor": {
  	"Parameters": {
  		"typeOfData": "kinesis",
  		"streamName": "sample-stream",
  		"endpointUrl": "https://kinesis.us-east-1.amazonaws.com"
  	}
  	...
  }
  ```

  O bien, especifique `streamARN`.  
**Example**  

  ```
  "StorageDescriptor": {
  	"Parameters": {
  		"typeOfData": "kinesis",
  		"streamARN": "arn:aws:kinesis:us-east-1:123456789:stream/sample-stream"
  	}
  	...
  }
  ```
+ Para configurar las propiedades de ETL de streaming para un origen de Kinesis en otra cuenta, especifique los parámetros `streamARN`, `awsSTSRoleARN` y `awsSTSSessionName` (opcional) en la estructura `StorageDescriptor` en la operación de la  API `CreateTable` o el comando de la CLI `create_table`.

  ```
  "StorageDescriptor": {
  	"Parameters": {
  		"typeOfData": "kinesis",
  		"streamARN": "arn:aws:kinesis:us-east-1:123456789:stream/sample-stream",
  		"awsSTSRoleARN": "arn:aws:iam::123456789:role/sample-assume-role-arn",
  		"awsSTSSessionName": "optional-session"
  	}
  	...
  }
  ```

### Origen de datos de Kafka
<a name="kafka-source"></a>

Al crear la tabla, configure las siguientes propiedades de ETL de streaming (consola).

**Tipo de origen**  
 **Kafka**

**Para un origen de Kafka:**    
**Nombre del tema**  
Nombre del tema como se especifica en Kafka.  
**Connection**  
Una conexión de AWS Glue que hace referencia a un origen de Kafka, como se describe en [Creación de una conexión de AWS Glue para un flujo de datos Apache Kafka](#create-conn-streaming).

### AWS GlueOrigen de tablas de Schema Registry
<a name="schema-registry-table"></a>

A fin de utilizar AWS Glue Schema Registry para trabajos de streaming, siga las instrucciones de [Caso de uso: AWS Glue Data Catalog](schema-registry-integrations.md#schema-registry-integrations-aws-glue-data-catalog) para crear o actualizar una tabla de Schema Registry.

Actualmente, el streaming de AWS Glue solo soporta el formato Avro de Glue Schema Registry con inferencia de esquema establecida en `false`.

## Notas y restricciones para orígenes de streaming de Avro
<a name="streaming-avro-notes"></a>

Las siguientes notas y restricciones corresponden a los orígenes de streaming en formato Avro:
+ Cuando se activa la detección de esquemas, el esquema de Avro debe incluirse en la carga. Cuando se desactiva, la carga debe contener solo datos.
+ Algunos tipos de datos de Avro no se admiten en marcos dinámicos. No se pueden especificar estos tipos de datos al definir el esquema con la página **Define a schema (Definir un esquema)** en el asistente de creación de tabla en la consola de AWS Glue. Durante la detección de esquemas, los tipos no soportados en el esquema Avro se convierten en tipos soportados de la siguiente manera:
  + `EnumType => StringType`
  + `FixedType => BinaryType`
  + `UnionType => StructType`
+ Si define el esquema de tabla mediante la página **Define a schema (Definir un esquema)** en la consola, el tipo de elemento raíz implícito para el esquema es `record`. Si desea un tipo de elemento raíz distinto de `record`, por ejemplo, `array` or `map`, no puede especificar el esquema mediante la página **Define a schema (Definir un esquema)**. En su lugar, debe omitir esa página y especificar el esquema como propiedad de tabla o dentro del script de ETL.
  + Para especificar el esquema en las propiedades de la tabla, complete el asistente de creación de tabla, edite los detalles de la tabla y agregue un nuevo par clave-valor en **Table properties (Propiedades de la tabla)**. Utilice la clave `avroSchema`, e ingrese un objeto JSON de esquema para el valor, tal y como se muestra en la siguiente captura de pantalla.  
![\[En el encabezado Table properties (Propiedades de la tabla), hay dos columnas de campos de texto. El encabezado de la columna de la izquierda es Key (Clave) y el encabezado de la columna de la derecha es Value (Valor). El par clave/valor en la primera fila es clasificación/avro. El par clave/valor de la segunda fila es avroSchema/{“type”:“array”,“items”:“string”}.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/table_properties_avro.png)
  + Para especificar el esquema en el script de ETL, modifique la instrucción de asignación `datasource0` y agregue la clave `avroSchema` a la instrucción `additional_options`, tal y como se muestra en los siguientes ejemplos de Python y Scala.

------
#### [ Python ]

    ```
    SCHEMA_STRING = ‘{"type":"array","items":"string"}’
    datasource0 = glueContext.create_data_frame.from_catalog(database = "database", table_name = "table_name", transformation_ctx = "datasource0", additional_options = {"startingPosition": "TRIM_HORIZON", "inferSchema": "false", "avroSchema": SCHEMA_STRING})
    ```

------
#### [ Scala ]

    ```
    val SCHEMA_STRING = """{"type":"array","items":"string"}"""
    val datasource0 = glueContext.getCatalogSource(database = "database", tableName = "table_name", redshiftTmpDir = "", transformationContext = "datasource0", additionalOptions = JsonOptions(s"""{"startingPosition": "TRIM_HORIZON", "inferSchema": "false", "avroSchema":"$SCHEMA_STRING"}""")).getDataFrame()
    ```

------

## Aplicación de patrones Grok a orígenes de streaming
<a name="create-table-streaming-grok"></a>

Puede crear un trabajo de ETL de streaming para un origen de datos de registro y utilizar patrones Grok para convertir los registros en datos estructurados. Luego, el trabajo de ETL procesa los datos como un origen de datos estructurados. Especifique los patrones Grok que se aplicarán al crear la tabla del Catálogo de datos para el origen de streaming.

Para obtener información acerca de los patrones Grok y los valores de la cadena de patrones personalizados, consulte [Escritura de clasificadores personalizados de Grok](custom-classifier.md#custom-classifier-grok).

**Para agregar patrones Grok a la tabla del Catálogo de datos (consola)**
+ Utilice el asistente de creación de tablas y cree la tabla con los parámetros especificados en [Creación de una tabla del Catálogo de datos para un origen de streaming](#create-table-streaming). Especifique el formato de datos como Grok, complete el campo **Grok pattern (Patrón de Grok)** y, opcionalmente, agregue patrones personalizados en **Custom patterns (Patrones personalizados) (opcional)**.  
![\[*\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/grok-data-format-create-table.png)

  Presione **Enter (Intro)** después de cada patrón personalizado.

**Para agregar patrones grok a la tabla del Catálogo de datos (API de AWS Glue o AWS CLI)**
+ Agregue el parámetro `GrokPattern` y, opcionalmente, el parámetro `CustomPatterns` a la operación de API `CreateTable` o al comando de la CLI `create_table`.

  ```
   "Parameters": {
  ...
      "grokPattern": "string",
      "grokCustomPatterns": "string",
  ...
  },
  ```

  Indique `grokCustomPatterns` como una cadena y use “\$1n” como separador entre patrones.

  El siguiente ejemplo muestra cómo especificar estos parámetros.  
**Example**  

  ```
  "parameters": {
  ...
      "grokPattern": "%{USERNAME:username} %{DIGIT:digit:int}",
      "grokCustomPatterns": "digit \d",
  ...
  }
  ```

## Definición de propiedades de trabajo para un trabajo ETL de streaming
<a name="create-job-streaming-properties"></a>

Cuando defina un trabajo de ETL de streaming en la consola de AWS Glue, proporcione las siguientes propiedades específicas de los flujos. Para obtener propiedades de trabajo adicionales, consulte [Definición de propiedades de trabajo para trabajos de Spark](add-job.md#create-job). 

**rol de IAM**  
Especifique el rol AWS Identity and Access Management (IAM) que se usa para dar una autorización a los recursos que se utilizan para ejecutar un trabajo, acceder a orígenes de streaming y acceder a almacenes de datos de destino.  
Para acceder a Amazon Kinesis Data Streams, asocie la política `AmazonKinesisFullAccess` administrada por AWS al rol o asocie una política IAM similar que permita un acceso más detallado. Para obtener información sobre políticas de ejemplo, consulte [Control del acceso a los recursos de Amazon Kinesis Data Streams mediante IAM](https://docs.aws.amazon.com/streams/latest/dev/controlling-access.html).  
Para obtener más información acerca de los permisos para ejecutar trabajos en AWS Glue, consulte [Administración de identidades y accesos para AWS Glue](security-iam.md).

**Tipo**  
Elija **Spark Streaming**.

**AWS GlueVersión **  
La versión de AWS Glue determina las versiones de Apache Spark y Python o Scala que están disponibles para el trabajo. Elija una selección que especifique la versión de Python o Scala disponible para el trabajo. AWS Glue La versión 2.0 con soporte de Python 3 es la predeterminada para los trabajos de ETL de streaming.

**período de mantenimiento**  
Especifica una ventana en la que se puede reiniciar un trabajo de streaming. Consulte [Ventanas de mantenimiento para AWS Glue Streaming](glue-streaming-maintenance.md).

**Job timeout (Tiempo de espera de flujo de trabajo)**  
Si lo desea, escriba una duración en minutos. El valor predeterminado está en blanco.  
+ Los trabajos de streaming deben tener un valor de tiempo de espera inferior a 7 días o 10 080 minutos.
+ Si el valor se deja en blanco, el trabajo se reiniciará después de 7 días, si no ha establecido un periodo de mantenimiento. Si ha configurado un periodo de mantenimiento, el trabajo se reiniciará durante el periodo de mantenimiento después de 7 días.

**Origen de datos**  
Elimine la tabla que creó en [Creación de una tabla del Catálogo de datos para un origen de streaming](#create-table-streaming).

**Destino de datos**  
Realice una de las siguientes acciones:  
+ Elija **Crear tablas en el destino de datos** y especifique las siguientes propiedades de destino de datos.  
**Almacén de datos**  
Seleccione Amazon S3 o JDBC.  
**Formato**  
Elija cualquier formato. Todos son compatibles para streaming.
+ Elija **Use tables in the data catalog and update your data target (Utilizar tablas en el Catálogo de datos y actualizar el destino de los datos)** y elija una tabla para un almacén de datos JDBC.

**Definición de esquema de salida**  
Realice una de las siguientes acciones:  
+ Seleccione **Automatically detect schema of each record (Detectar automáticamente el esquema de cada registro)** para habilitar la detección de esquemas. AWS Glue determina el esquema a partir de los datos de streaming.
+ Seleccione **Specify output schema for all records (Especificar esquema de salida para todos los registros)** para utilizar la transformación de la función de aplicar mapeo a fin de definir el esquema de salida.

**Script**  
Si lo desea, proporcione su propio script o modifique el script generado para realizar operaciones compatibles con el motor Apache Spark Structured Streaming. Para obtener información sobre las operaciones disponibles, consulte [Operaciones en DataFrames/conjuntos de datos de streaming](https://spark.apache.org/docs/latest/structured-streaming-programming-guide.html#operations-on-streaming-dataframesdatasets).

## Notas y restricciones de ETL de streaming
<a name="create-job-streaming-restrictions"></a>

Tenga en cuenta las siguientes notas y restricciones:
+ La descompresión automática para los trabajos de ETL de streaming en AWS Glue solo está disponible para los tipos de compresión admitidos. Tenga también en cuenta lo siguiente:
  + Con encuadre de Snappy se refiere al [formato de encuadre](https://github.com/google/snappy/blob/main/framing_format.txt) oficial para Snappy.
  + Deflate es compatible con la versión 3.0 de Glue, no con la versión 2.0.
+ Cuando se utiliza la detección de esquemas, no se pueden realizar combinaciones de datos de streaming.
+ Los trabajos ETL de streaming de AWS Glue no admiten el tipo de datos de la Unión para el Registro de esquemas de AWS Glue con formato Avro.
+ Su script de ETL puede usar las transformaciones incorporadas de AWS Glue y las transformaciones nativas de Apache Spark Structured Streaming. Para obtener más información, consulte [Operaciones en DataFrames/conjuntos de datos de streaming](https://spark.apache.org/docs/latest/structured-streaming-programming-guide.html#operations-on-streaming-dataframesdatasets) en el sitio web de Apache Spark o [Referencia de transformaciones de PySpark de AWS Glue](aws-glue-programming-python-transforms.md).
+ AWS GlueLos trabajos de ETL de streaming de utilizan puntos de comprobación para realizar un seguimiento de los datos que se han leído. Por lo tanto, un trabajo detenido y reiniciado comienza donde lo dejó en la transmisión. Si desea volver a procesar los datos, puede eliminar la carpeta de puntos de control a la que se hace referencia en el script.
+ No se admiten los marcadores de trabajo.
+ Para la función de distribución mejorada de Kinesis Data Streams en un trabajo, consulte [Uso de una distribución mejorada en los trabajos de streaming de Kinesis](aws-glue-programming-etl-connect-kinesis-efo.md).
+ Si utiliza una tabla del Catálogo de datos creada a partir de AWS Glue Schema Registry, cuando se encuentre disponible una versión de esquema nueva, para reflejar el esquema nuevo, debe realizar lo siguiente:

  1. Detenga los trabajos asociados a la tabla.

  1. Actualice el esquema de la tabla del Catálogo de datos.

  1. Reinicie los trabajos asociados a la tabla.