

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Ejemplos de cómo crear y utilizar aplicaciones en Managed Service para Apache Flink
<a name="examples-collapsibles"></a>

En esta sección se proporcionan ejemplos de cómo crear y utilizar aplicaciones en Managed Service para Apache Flink. Incluyen ejemplos de código e step-by-step instrucciones para ayudarle a crear un servicio gestionado para las aplicaciones de Apache Flink y comprobar sus resultados.

Antes de explorar estos ejemplos, se recomienda que en primer lugar examine lo siguiente: 
+ [Funcionamiento](how-it-works.md)
+ [Tutorial: Comience a utilizar la DataStream API en Managed Service for Apache Flink](getting-started.md)

**nota**  
En estos ejemplos se supone que se utiliza la región Este de EE. UU. (Norte de Virginia) (us-east-1). Si se utiliza una región diferente, actualice el código de la aplicación, los comandos y los roles de IAM en concordancia.

**Topics**
+ [Ejemplos de Java para Managed Service para Apache Flink](examples-new-java.md)
+ [Ejemplos de Python para Managed Service para Apache Flink](examples-new-python.md)
+ [Ejemplos de Scala para Managed Service para Apache Flink: ejemplos](examples-new-scala.md)

# Ejemplos de Java para Managed Service para Apache Flink
<a name="examples-new-java"></a>

En los siguientes ejemplos se muestra cómo crear aplicaciones escritas en Java.



**nota**  
La mayoría de los ejemplos están diseñados para ejecutarse tanto de forma local, en la máquina de desarrollo y el IDE que prefiera, como en Amazon Managed Service para Apache Flink. En ellos se muestran los mecanismos que se pueden utilizar para transferir los parámetros de la aplicación y cómo configurar la dependencia correctamente para ejecutar la aplicación en ambos entornos sin cambios.

## Mejore el rendimiento de la serialización definiendo la personalización TypeInfo
<a name="improving-serialization-performance-java"></a>

Este ejemplo ilustra cómo definir la personalización TypeInfo en un objeto de registro o estado para evitar que la serialización recurra a la serialización Kryo, que es menos eficiente. Esto es necesario, por ejemplo, cuando los objetos contienen una `List` o un `Map`. Para obtener más información, consulte [Data Types & Serialization](https://nightlies.apache.org/flink/flink-docs-release-1.20/docs/dev/datastream/fault-tolerance/serialization/types_serialization/#data-types--serialization) en la documentación de Apache Flink. El ejemplo también muestra cómo comprobar si la serialización del objeto recurre a la serialización de Kryo, que es menos eficiente.

Ejemplo de código: [CustomTypeInfo](https://github.com/aws-samples/amazon-managed-service-for-apache-flink-examples/tree/main/java/Serialization/CustomTypeInfo)

## Comience con la DataStream API
<a name="getting-started-datastream-java"></a>

En este ejemplo, se muestra una aplicación sencilla que lee un flujo de datos de Kinesis y escribe en otro flujo de datos de Kinesis mediante la API de `DataStream`. En el ejemplo se muestra cómo configurar el archivo con las dependencias correctas, crear el uber-JAR y, a continuación, analizar los parámetros de configuración para poder ejecutar la aplicación de forma local, en su IDE y en Amazon Managed Service para Apache Flink.

Ejemplo de código: [GettingStarted](https://github.com/aws-samples/amazon-managed-service-for-apache-flink-examples/tree/main/java/GettingStarted)

## Introducción a la API de tablas y SQL
<a name="getting-started-table-java"></a>

En este ejemplo, se muestra una aplicación sencilla que utiliza la API de `Table` y SQL. Muestra cómo integrar la API de `DataStream` con la API de `Table` o el SQL en la misma aplicación Java. También se muestra cómo utilizar el conector de `DataGen` para generar datos de prueba aleatorios desde la propia aplicación Flink, sin necesidad de un generador de datos externo.

Ejemplo completo: [GettingStartedTable](https://github.com/aws-samples/amazon-managed-service-for-apache-flink-examples/tree/main/java/GettingStartedTable)

## Utilice S3Sink (API) DataStream
<a name="s3-sink-java"></a>

En este ejemplo, se muestra cómo usar `FileSink` de la API de `DataStream` para escribir archivos JSON en un bucket de S3.

Ejemplo de código: [S3Sink](https://github.com/aws-samples/amazon-managed-service-for-apache-flink-examples/tree/main/java/S3Sink)

## Utilice una fuente, estándar o EFO, consumidores y un receptor (API) de Kinesis DataStream
<a name="kinesis-EFO-sink-java"></a>

Este ejemplo muestra cómo configurar una fuente que consume desde un dflujo de datos de Kinesis, ya sea mediante el consumidor estándar o EFO, y cómo configurar un receptor para el flujo de datos de Kinesis.

Ejemplo de código: [KinesisConnectors](https://github.com/aws-samples/amazon-managed-service-for-apache-flink-examples/tree/main/java/KinesisConnectors)

## Usa un sumidero Amazon Data Firehose (API) DataStream
<a name="firehose-sink-java"></a>

En este ejemplo se muestra cómo enviar datos a Amazon Data Firehose (anteriormente conocido como Kinesis Data Firehose).

Ejemplo de código: [KinesisFirehoseSink](https://github.com/aws-samples/amazon-managed-service-for-apache-flink-examples/tree/main/java/KinesisFirehoseSink)

## Uso del conector de receptor Prometheus
<a name="prometheus-sink-java"></a>

En este ejemplo se muestra el uso del [conector de receptor de Prometheus](https://nightlies.apache.org/flink/flink-docs-release-1.20/docs/connectors/datastream/prometheus/) para escribir datos de series temporales en Prometheus.

Ejemplo de código: [PrometheusSink](https://github.com/aws-samples/amazon-managed-service-for-apache-flink-examples/tree/main/java/PrometheusSink)

## Utilice agregaciones de ventanas (API) DataStream
<a name="windowing-aggregations-java"></a>

En este ejemplo, se muestran cuatro tipos de agregación de ventanas en la API de `DataStream`.

1. Ventana deslizante basada en el tiempo de procesamiento

1. Ventana deslizante basada en la hora del evento

1. Ventana de saltos de tamaño constante basada en el tiempo de procesamiento

1. Ventana de saltos de tamaño constante basada en la hora del evento

Ejemplo de código: [Windowing](https://github.com/aws-samples/amazon-managed-service-for-apache-flink-examples/tree/main/java/Windowing) 

## Uso de métricas personalizadas
<a name="custom-metrics-java"></a>

En este ejemplo, se muestra cómo añadir métricas personalizadas a la aplicación Flink y enviarlas a las métricas. CloudWatch 

Ejemplo de código: [CustomMetrics](https://github.com/dzikosc/amazon-managed-service-for-apache-flink-examples/tree/main/java/CustomMetrics)

## Uso de los proveedores de configuración de Kafka para obtener un almacén de claves y un almacén de confianza personalizados para mTLS en tiempo de ejecución
<a name="kafka-keystore-mTLS"></a>

Este ejemplo ilustra cómo se pueden utilizar los proveedores de configuración de Kafka para configurar un almacén de claves y un almacén de confianza personalizados con certificados para la autenticación mTLS para el conector de Kafka. Esta técnica le permite cargar los certificados personalizados necesarios desde Amazon S3 y los secretos desde el AWS Secrets Manager momento en que se inicia la aplicación.

Ejemplo de código: [Kafka-MTLS-Keystore](https://github.com/aws-samples/amazon-managed-service-for-apache-flink-examples/tree/main/java/KafkaConfigProviders/Kafka-mTLS-Keystore-ConfigProviders) - ConfigProviders

## Utilice los proveedores de configuración de Kafka para obtener los secretos para la autenticación en tiempo de ejecución SASL/SCRAM
<a name="kafka-secrets"></a>

Este ejemplo ilustra cómo puede utilizar los proveedores de configuración de Kafka para obtener credenciales AWS Secrets Manager y descargar el almacén de confianza de Amazon S3 para configurar la SASL/SCRAM autenticación en un conector de Kafka. Esta técnica le permite cargar los certificados personalizados necesarios desde Amazon S3 y los secretos desde el AWS Secrets Manager momento en que se inicia la aplicación.

Ejemplo de código: [Kafka- - SASL\$1SSL ConfigProviders](https://github.com/aws-samples/amazon-managed-service-for-apache-flink-examples/tree/main/java/KafkaConfigProviders/Kafka-SASL_SSL-ConfigProviders)

## Utilice los proveedores de configuración de Kafka para obtener un almacén de claves y un almacén de confianza personalizados para los mTLS en tiempo de ejecución con API de tabla/SQL
<a name="kafka-custom-keystore"></a>

Este ejemplo ilustra cómo se pueden utilizar los proveedores de configuración de Kafka en la API de tabla/SQL para configurar un almacén de claves y un almacén de confianza personalizados con certificados para la autenticación mTLS para el conector de Kafka. Esta técnica le permite cargar los certificados personalizados necesarios desde Amazon S3 y los secretos desde el AWS Secrets Manager momento en que se inicia la aplicación.

Ejemplo de código: [Kafka-MTLS-Keystore-SQL](https://github.com/aws-samples/amazon-managed-service-for-apache-flink-examples/tree/main/java/KafkaConfigProviders/Kafka-mTLS-Keystore-Sql-ConfigProviders) - ConfigProviders

## Utilice las salidas laterales para dividir un flujo
<a name="side-output"></a>

Este ejemplo ilustra cómo aprovechar las [salidas laterales](https://nightlies.apache.org/flink/flink-docs-master/docs/dev/datastream/side_output/) en Apache Flink para dividir un flujo en función de atributos específicos. Este patrón es particularmente útil cuando se intenta implementar el concepto de colas de mensajes fallidos (DLQ) en aplicaciones de flujo.

Ejemplo de código: [SideOutputs](https://github.com/aws-samples/amazon-managed-service-for-apache-flink-examples/tree/main/java/SideOutputs)

## Utilice Async I/O para llamar a un punto final externo
<a name="async-i-o"></a>

Este ejemplo ilustra cómo utilizar la [E/S asíncrona de Apache Flink](https://nightlies.apache.org/flink/flink-docs-release-1.20/docs/dev/datastream/operators/asyncio/) para llamar a un punto de conexión externo sin bloqueos, con reintentos en caso de errores recuperables.

Ejemplo de código: [AsyncIO](https://github.com/aws-samples/amazon-managed-service-for-apache-flink-examples/tree/main/java/AsyncIO)

# Ejemplos de Python para Managed Service para Apache Flink
<a name="examples-new-python"></a>

En los siguientes ejemplos se muestra cómo crear aplicaciones escritas en Python.

**nota**  
La mayoría de los ejemplos están diseñados para ejecutarse tanto de manera local, en la máquina de desarrollo y el IDE que prefiera, como en Amazon Managed Service para Apache Flink. En ellos se muestra el sencillo mecanismo que se puede utilizar para transferir los parámetros de la aplicación y cómo configurar la dependencia de manera correcta para ejecutar la aplicación en ambos entornos sin cambios.

**Dependencias de proyectos**

La mayoría de los PyFlink ejemplos requieren una o más dependencias como archivos JAR, por ejemplo, para los conectores Flink. Luego, estas dependencias se deben empaquetar con la aplicación cuando se desplieguen en Amazon Managed Service para Apache Flink. 

Los siguientes ejemplos ya incluyen las herramientas que le permiten ejecutar la aplicación de manera local para el desarrollo y las pruebas, y para empaquetar correctamente las dependencias necesarias. Esta herramienta requiere el uso de Java JDK11 y Apache Maven. Consulte el archivo README que se incluye en cada ejemplo para obtener instrucciones específicas.

**Ejemplos**

## Comience con PyFlink
<a name="getting-started-pyflink"></a>

En este ejemplo se muestra la estructura básica de una PyFlink aplicación que utiliza SQL embebido en código Python. Este proyecto también proporciona un esquema para cualquier PyFlink aplicación que incluya dependencias JAR, como conectores. La sección README proporciona una guía detallada sobre cómo ejecutar su aplicación Python de manera local para el desarrollo. El ejemplo también muestra cómo incluir una única dependencia JAR, el conector SQL de Kinesis de este ejemplo, en la aplicación. PyFlink

Ejemplo de código: [GettingStarted](https://github.com/dzikosc/amazon-managed-service-for-apache-flink-examples/tree/main/python/GettingStarted)

## Agregación de dependencias de Python
<a name="add-python-dependencies"></a>

Este ejemplo muestra cómo añadir dependencias de Python a tu PyFlink aplicación de la forma más general. Este método funciona para dependencias simples, como Boto3, o dependencias complejas que contienen bibliotecas de C, como. PyArrow

Ejemplo de código: [PythonDependencies](https://github.com/aws-samples/amazon-managed-service-for-apache-flink-examples/tree/main/python/PythonDependencies)

## Utilice agregaciones de ventanas (API) DataStream
<a name="windowing-aggregations-python"></a>

En este ejemplo, se muestran cuatro tipos de agregación de ventanas en SQL incrustado en una aplicación de Python.

1. Ventana deslizante basada en el tiempo de procesamiento

1. Ventana deslizante basada en la hora del evento

1. Ventana de saltos de tamaño constante basada en el tiempo de procesamiento

1. Ventana de saltos de tamaño constante basada en la hora del evento

Ejemplo de código: [Windowing](https://github.com/aws-samples/amazon-managed-service-for-apache-flink-examples/tree/main/python/Windowing)

## Uso de un receptor S3
<a name="s3-sink-python"></a>

En este ejemplo, se muestra cómo escribir el resultado en Amazon S3 como archivos JSON, mediante SQL integrado en una aplicación de Python. Debe habilitar puntos de control para que el receptor de S3 escriba y rote archivos en Amazon S3. 

Ejemplo de código: [S3Sink](https://github.com/aws-samples/amazon-managed-service-for-apache-flink-examples/tree/main/python/S3Sink)

## Uso de función definida por el usuario (UDF)
<a name="UDF-python"></a>

En este ejemplo se muestra cómo definir una función definida por el usuario, implementarla en Python y utilizarla en código SQL que se ejecuta en una aplicación de Python. 

Ejemplo de código: [UDF](https://github.com/aws-samples/amazon-managed-service-for-apache-flink-examples/tree/main/python/UDF)

## Uso de un receptor de Amazon Data Firehose
<a name="Firehose-sink-python"></a>

En este ejemplo se muestra cómo enviar datos a Amazon Data Firehose mediante SQL. 

Ejemplo de código: [FirehoseSink](https://github.com/aws-samples/amazon-managed-service-for-apache-flink-examples/tree/main/python/FirehoseSink)

# Ejemplos de Scala para Managed Service para Apache Flink: ejemplos
<a name="examples-new-scala"></a>

En los siguientes ejemplos se muestra cómo crear aplicaciones usando Scala con Apache Flink.



## Configuración de una aplicación de varios pasos
<a name="getting-started-scala"></a>

Este ejemplo muestra cómo configurar una aplicación Flink en Scala. Muestra cómo configurar el proyecto SBT para incluir dependencias y crear el uber-JAR. 

Ejemplo de código: [GettingStarted](https://github.com/aws-samples/amazon-managed-service-for-apache-flink-examples/tree/main/scala/GettingStarted)