Una agregación de ventana de recuento de eventos

Alex P.:

He agrupado mis eventos kafka:

    private static void createImportStream(final StreamsBuilder builder, final Collection<String> topics) {
        final KStream<byte[], GraphEvent> stream = builder.stream(topics, Consumed.with(Serdes.ByteArray(), new UserEventThriftSerde()));
        stream.filter((key, request) -> {
            return Objects.nonNull(request);
        }).groupBy(
                (key, value) -> Integer.valueOf(value.getSourceType()),
                Grouped.with(Serdes.Integer(), new UserEventThriftSerde()))
              .aggregate(ArrayList::new, (key, value, aggregatedValue) -> {
                          aggregatedValue.add(value);
                          return aggregatedValue;
                      },
                      Materialized.with(Serdes.Integer(), new ArrayListSerde<UserEvent>(new UserEventThriftSerde()))
              ).toStream();
    }

¿Cómo puedo añadir una windowpero no en función del tiempo, pero en base a número de eventos. La razón es que los eventos serán un volcado de datos, un tiempo en ventanas de agregación no encajaría ya que todos los acontecimientos que puedan aparecer en los mismos pocos segundos.

Matthias J. Sax:

Kafka corrientes no es compatible con ventanas a base de conteo fuera de la caja porque son no determinista y es difícil de manejar fuera de la orden de los datos.

En lugar de utilizar el ADSL, se puede utilizar la API de procesador para construir un operador personalizado para su caso de uso sin embargo.

Supongo que te gusta

Origin http://10.200.1.11:23101/article/api/json?id=378735&siteId=1
Recomendado
Clasificación