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.

Flink divide la canalización

¿Por qué divide flink la tubería en varios trabajos si hay un execute_insert en la tubería?

docker-compose exec jobmanager ./bin/flink run --pyModule my.main -d --pyFiles /opt/pyflink/ -d
Se ha enviado el trabajo con el ID de trabajo 3b0e179dad500a362525f23e82e2c826
Se ha enviado el trabajo con el ID de trabajo 93d122a6331b4b9ec2578fe67e748a8e

Fin de la tubería:

t_env.execute_sql("""
        CREATE TABLE mySink (
          id STRING,
          name STRING,
          data_ranges ARRAY<ROW<start BIGINT, end BIGINT>>,
          meta ARRAY<ROW<name STRING, text STRING>>,
          current_hour INT

        ) partitioned by(current_hour) WITH (
          'connector' = 'filesystem',
          'format' = 'avro',
          'path' = '/opt/pyflink-walkthrough/output/table',
          'sink.rolling-policy.rollover-interval' = '1 hour',
          'partition.time-extractor.timestamp-pattern'='$current_hour',
          'sink.partition-commit.delay'='1 hour',
          'sink.partition-commit.trigger'='process-time',
          'sink.partition-commit.policy.kind'='success-file'


        )
    """)
table = t_env.from_data_stream(
        ds,
        ds_schema,
    ).select('id, name, data_ranges, meta, current_hour').execute_insert("mySink")

Si comento .execute_insert (“mi receptor”), los trabajos no se dividirán.

docker-compose exec jobmanager ./bin/flink run --pyModule eywa.main -d --pyFiles /opt/pyflink/ -d
Se ha enviado el trabajo con el ID de trabajo 814a105559b58d5f65e4de8ca8c0688e
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Flink divide el pipeline en varios jobs cuando hay un execute_insert en el pipeline porque execute_insert es una operación de sink que escribe los datos en un sistema externo. Flink necesita asegurarse de que los datos estén correctamente particionados y confirmados antes de escribirlos en el sistema externo. Por lo tanto, Flink utiliza un protocolo de confirmación de dos fases que implica dividir el pipeline en trabajos separados. El primer job produce un conjunto de registros y realiza checkpoints del estado. El segundo job lee los registros desde el checkpoint y los confirma en el sistema externo. Este enfoque garantiza la tolerancia a fallos y la consistencia de datos al escribir datos en sistemas externos.

Comments are closed.