

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 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)