es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo probar la ventana global de Flink con desencadenador y evictor

Tengo un pipeline que utiliza la ventana global de Flink con un disparador personalizado basado en el tiempo de evento (a partir de la marca de tiempo en el elemento que llega) y un eliminador que corta elementos innecesarios de la ventana y los pasa a ProcessFunction, algo así:

 public SingleOutputStreamOperator<resultados> processElements(DataStream<elementos> inputStream) {
 return inputStream
                .keyBy(Elementos::getId)
                .window(GlobalWindows.create())
                .trigger(new CustomTrigger())
                .evictor(new CustomEvictor())
                .process(new MyWindowProcessFunction())
                .name("Process")
                .uid("process-elements")
                .returns(Resultados.class);
}

public void executePipelineFlow(StreamExecutionEnvironment env) throws Exception {
    DataStream<elementos> inputStream = getInputStream(env);
    DataStream<resultados> processedInput = processElements(inputStream);
    applySink(processedInput);


}

Sé que puedo probar MyWindowProcessFunction con TestHarness que proporciona la manipulación de la marca de agua, pero necesito probar todo el proceso, Trigger+Evictor+ProcessFunction.

También he intentado algún tipo de SourceFunction cronometrado con el uso de Thread.sleep(), pero mi pipeline funciona en tiempo de evento y esto no funcionará si tengo 1000 elementos en el flujo de prueba (porque la prueba tomará algunas horas).

Mi pregunta es, ¿cómo puedo probar unitariamente todo mi método processElements?

No puedo encontrar ningún ejemplo de prueba para mi caso.

Gracias

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Eres un traductor de español que traduce documentos de TI. Traduce lo siguiente al español. No traduzcas el código y la salida en markdown en adelante.

Comments are closed.