Todos los productos
Search
Centro de documentos

Realtime Compute for Apache Flink:Job errors FAQ

Última actualización: Sep 03, 2026

Errores comunes en tiempo de ejecución de jobs y sus soluciones en Realtime Compute for Apache Flink.

¿Qué debo hacer si un job no se inicia?

  • Descripción del problema

    Al hacer clic en Start en la columna Actions, el estado del job cambia de STARTING a FAILED.

  • Soluciones

    • Revise la pestaña Events: Vaya a la pestaña Events en la página de detalles del job. Localice el evento de falla ocurrido cuando el job no pudo iniciarse y revise sus detalles para identificar la causa raíz.

    • Consulte los registros de inicio: Vaya a la pestaña Logs y seleccione la subpestaña Startup Logs. Busque mensajes de error específicos que expliquen por qué falló el inicio del job.

    • Inspeccione los registros de JobManager/TaskManager: Si el JobManager parece iniciarse correctamente pero el job sigue fallando, consulte los registros detallados del JobManager y los TaskManagers. Estos se encuentran en las subpestañas Job Manager o Running Task Managers dentro de la pestaña Logs.

  • Errores comunes y soluciones

    Descripción del problema

    Causa

    Solución

    ERROR:exceeded quota: resourcequota

    Recursos insuficientes en la Resource Queue actual.

    Aumente la capacidad de la Resource Queue o reduzca los requisitos de recursos del job.

    ERROR:the vswitch ip is not enough

    Direcciones IP insuficientes en el namespace para los TaskManagers requeridos.

    Reduzca el paralelismo del job, ajuste la configuración de slots o modifique la configuración del vSwitch.

    ERROR: pooler: ***: authentication failed

    Par de AccessKey no válido o permisos insuficientes.

    Compruebe que el par de AccessKey sea válido y pertenezca a una cuenta con permisos para ejecutar y gestionar jobs.

¿Cómo corrijo el error de conexión a la base de datos?

  • Descripción del problema

    failed to execute sql statement
  • Causa

    El catálogo registrado no es válido o no es accesible.

  • Solución

    Vaya a la página Catalogs, elimine los catálogos atenuados y vuelva a registrarlos.

¿Qué debo hacer si los datos en las tareas de un job no se consumen después de ejecutarlo?

  • Compruebe la conectividad de red

    Si no se generan ni consumen datos en el almacenamiento ascendente y descendente, consulte la pestaña Startup Logs para buscar mensajes de error. Si observa errores de tiempo de espera, solucione los problemas de conectividad de red entre los sistemas de almacenamiento.

  • Verifique el estado de ejecución de las tareas

    En la pestaña Status, compruebe si los datos se leen desde el origen y se escriben en el destino para determinar dónde ocurre el error.

    En la tabla de métricas, revise las columnas Bytes Sent y Records sent del nodo Source. Si los valores son mayores que 0 (por ejemplo, 19.74 GB / 76,766,861 registros), el origen envía datos correctamente. De igual forma, consulte las columnas Bytes Received y Records Received de los nodos descendentes para confirmar que reciben datos con normalidad.

  • Revise la salida del operador

    Agregue una tabla sink de impresión a cada operador para solucionar el problema.

¿Qué debo hacer si un job se reinicia inesperadamente?

Para solucionar el error, consulte la pestaña Logs.

  • Consulte la información de excepciones.

    En la subpestaña JM Exceptions, revise el error reportado e identifique la causa raíz.

  • Consulte los registros del JobManager y los TaskManagers del job.

    En la pestaña Logs, haga clic en la subpestaña Job Manager y luego seleccione la subpestaña Logs para ver los registros correspondientes al job. Asimismo, haga clic en la subpestaña Running Task Managers para consultar los registros de los TM.

  • Consulte los registros de los TaskManagers fallidos del job.

    Algunas excepciones pueden provocar fallos en los TaskManagers, lo que genera registros incompletos. Revise los últimos registros inválidos de los TaskManagers para solucionar el problema.

  • Consulte los registros históricos de instancias del job.

    Revise los registros históricos de instancias del job para identificar la causa del fallo.

¿Por qué se suspende la salida de datos en el operador LocalGroupAggregate?

  • Código

    CREATE TEMPORARY TABLE s1 (
      a INT,
      b INT,
      ts as PROCTIME(),
      PRIMARY KEY (a) NOT ENFORCED
    ) WITH (
      'connector'='datagen',
      'rows-per-second'='1',
      'fields.b.kind'='random',
      'fields.b.min'='0',
      'fields.b.max'='10'
    );
    
    CREATE TEMPORARY TABLE sink (
      a BIGINT,
      b BIGINT
    ) WITH (
      'connector'='print'
    );
    
    CREATE TEMPORARY VIEW window_view AS
    SELECT window_start, window_end, a, sum(b) as b_sum FROM TABLE(TUMBLE(TABLE s1, DESCRIPTOR(ts), INTERVAL '2' SECONDS)) GROUP BY window_start, window_end, a;
    
    INSERT INTO sink SELECT count(distinct a), b_sum FROM window_view GROUP BY b_sum;
  • Descripción del problema

    La salida de datos se suspende en el operador LocalGroupAggregate durante un periodo prolongado y falta el operador MiniBatchAssigner en la topología del job.

    En la interfaz Operator Analysis (Beta), la topología del job muestra que LocalGroupAggregate[201] tiene un RecordsIn de 1853 y un RecordsOut de solo 116. El Vertex2 descendente (que contiene los operadores GlobalGroupAggregate y Calc) presenta un Out (sum) de 0 y un Backpressured (max) de 0%. No aparece ningún nodo MiniBatchAssigner en toda la topología.

  • Causa

    El job incluye operadores WindowAggregate y GroupAggregate. El operador WindowAggregate utiliza proctime como columna de tiempo. Se usa memoria administrada para almacenar datos en caché en el modo de procesamiento miniBatch si el parámetro table.exec.mini-batch.size no está configurado o tiene un valor negativo.

    El operador MiniBatchAssigner no se genera y no puede enviar mensajes de marca de agua a los operadores de cálculo para activar el cálculo final y la salida de datos. El cálculo final y la salida de datos solo se activan cuando se cumple una de las siguientes condiciones: la memoria administrada está llena, se recibe un comando CHECKPOINT y no se ha realizado ningún checkpoint, o se cancela el job. Para obtener más información, consulte table.exec.mini-batch.size. Si el intervalo de checkpoint se establece en un valor excesivamente grande, el operador LocalGroupAggregate no activa la salida de datos durante un periodo prolongado.

  • Soluciones

    • Reduzca el intervalo de checkpoint para que el operador LocalGroupAggregate active la salida de datos antes de realizar el checkpoint. Tuning Checkpointing.

    • Utilice memoria heap para almacenar datos en caché. La salida se activa automáticamente cuando los datos en caché alcanzan el valor de table.exec.mini-batch.size. Establezca este parámetro en un valor positivo N. How do I configure custom runtime parameters for a job?

¿Qué debo hacer si la inactividad de particiones de Kafka retrasa la salida de ventanas?

Si el conector Kafka ascendente tiene varias particiones pero solo algunas reciben datos, las particiones inactivas impiden que avance la marca de agua. Las ventanas no pueden cerrarse a tiempo, lo que retrasa la salida en tiempo real.

Configure un tiempo de espera para marcar las particiones inactivas. Estas se excluyen de los cálculos de marca de agua hasta que vuelvan a recibir datos. Configuration.

Agregue la siguiente configuración al campo Other Configuration en la sección Parameters de la pestaña Configuration. How do I configure custom runtime parameters for a job?

table.exec.source.idle-timeout: 1s

¿Cómo localizo el error si el JobManager no se está ejecutando?

La página Flink UI no aparece porque el JobManager no se está ejecutando. Para identificar la causa, siga estos pasos:

  1. En el menú de navegación izquierdo de la Development Console, elija O&M > Deployments. En la página Deployments, busque el despliegue del job objetivo y haga clic en su nombre.

  2. Haga clic en la pestaña Events.

  3. Busque errores mediante el atajo de teclado de su sistema operativo:

    • Windows: Ctrl+F

    • macOS: Command+F

    En la página de detalles del job, haga clic en la pestaña Events para ver la lista de eventos del ciclo de vida del job y los mensajes de error. En el visor de registros, localice la línea de excepción correspondiente. Por ejemplo, un registro WARN en la línea 52 puede indicar un error al analizar el par clave-valor para la clave $internal.application.program-args en la línea 43 de /flink/conf/flink-conf.yaml.

¿Qué debo hacer cuando aparece el mensaje "INFO: org.apache.flink.fs.osshadoop.shaded.com.aliyun.oss"?

  • Descripción del problema

    2020-08-09 10:18:06,010 INFO  org.apache.flink.runtime.jobmaster.JobMaster                [] - Configuring application-defined state backend with job/cluster config
    2020-08-09 10:18:06,249 INFO  org.apache.flink.fs.osshadoop.shaded.com.aliyun.oss         [] - [Server]Unable to execute HTTP request: Not Found
    [ErrorCode]: NoSuchKey
    [RequestId]: 5F2F5CDE79BCB53539AF510C
    [HostId]: null
    2020-08-09 10:18:06,262 INFO  org.apache.flink.fs.osshadoop.shaded.com.aliyun.oss         [] - [Server]Unable to execute HTTP request: Not Found
    [ErrorCode]: NoSuchKey
    [RequestId]: 5F2F5CDE79BCB53539CF510C
    [HostId]: null
    2020-08-09 10:18:06,349 INFO  org.apache.flink.fs.osshadoop.shaded.com.aliyun.oss         [] - [Server]Unable to execute HTTP request: Not Found
    [ErrorCode]: NoSuchKey
    [RequestId]: 5F2F5CDE79BCB535391452OC
    [HostId]: null
  • Causa

    Los datos se almacenan en un bucket de OSS. Cuando OSS crea un directorio, comprueba si ya existe. De no ser así, se imprime este mensaje INFO. Esto no afecta a sus jobs.

  • Solución

    Agregue la siguiente configuración de logger a su plantilla de registros para suprimir este mensaje: <Logger level="ERROR" name="org.apache.flink.fs.osshadoop.shaded.com.aliyun.oss"/>. the log configuration topic.

¿Qué debo hacer si aparece el mensaje de error "akka.pattern.AskTimeoutException"?

  • Causas

    • Causa 1: Recolección de basura (GC) frecuente. La memoria insuficiente en el JobManager o los TaskManagers provoca GC frecuente, lo que genera tiempos de espera en heartbeats y RPC entre el JobManager y los TaskManagers.

    • Causa 2: Alto volumen de solicitudes RPC. Un exceso de solicitudes RPC satura el JobManager, lo que provoca una acumulación de RPC y tiempos de espera en heartbeats y RPC.

    • Causa 3: Valores de tiempo de espera demasiado pequeños. La configuración de tiempo de espera es muy baja. Cuando Realtime Compute for Apache Flink reintenta la conexión a un servicio de terceros, el tiempo de espera expira antes de que se reporte el fallo.

  • Soluciones

    • Solución 1: Consulte la frecuencia y duración de la GC en el uso de memoria del job y los registros de GC. Si la GC es frecuente o prolongada, aumente la memoria del JobManager y los TaskManagers.

    • Solución 2: Para manejar un alto volumen de solicitudes RPC, aumente el número de núcleos de CPU y el tamaño de memoria del JobManager, y establezca los parámetros akka.ask.timeout y heartbeat.timeout en valores mayores.

      Importante
      • Ajuste akka.ask.timeout y heartbeat.timeout solo cuando exista una gran cantidad de solicitudes RPC. En jobs con pocas solicitudes RPC, valores menores generalmente no causan este problema.

      • Establezca los valores según sus necesidades empresariales. Valores excesivamente grandes aumentan el tiempo de recuperación cuando un TaskManager se cierra inesperadamente.

    • Solución 3: Para manejar fallos de conexión a servicios de terceros, aumente los siguientes parámetros para que los errores de conexión se reporten oportunamente:

      • client.timeout: Valor predeterminado: 60. Valor recomendado: 600. Unidad: segundos.

      • akka.ask.timeout: Valor predeterminado: 10. Valor recomendado: 600. Unidad: segundos.

      • client.heartbeat.timeout: Valor predeterminado: 180000. Valor recomendado: 600000. Unidad: segundos.

        Nota

        Para evitar errores, no incluya la unidad en el valor.

      • heartbeat.timeout: Valor predeterminado: 50000. Valor recomendado: 600000. Unidad: milisegundos.

        Nota

        Para evitar errores, no incluya la unidad en el valor.

      Por ejemplo, si aparece el mensaje de error "Caused by: java.sql.SQLTransientConnectionException: connection-pool-xxx.mysql.rds.aliyuncs.com:3306 - Connection is not available, request timed out after 30000ms", el pool de conexiones de MySQL está lleno. En este caso, debe aumentar el valor del parámetro connection.pool.size descrito en los parámetros WITH de MySQL. Valor predeterminado: 20.

      Nota

      Determine los valores mínimos a partir del mensaje de error de tiempo de espera. El valor mostrado en el error indica la configuración actual. Por ejemplo, "60000 ms" en "pattern.AskTimeoutException: Ask timed out on [Actor[akka://flink/user/rpc/dispatcher_1#1064915964]] after [60000 ms]." es el valor de client.timeout.

¿Qué debo hacer si aparece el mensaje de error "Task did not exit gracefully within 180 + seconds."?

  • Descripción del problema

    Task did not exit gracefully within 180 + seconds.
    2022-04-22T17:32:25.852861506+08:00 stdout F org.apache.flink.util.FlinkRuntimeException: Task did not exit gracefully within 180 + seconds.
    2022-04-22T17:32:25.852865065+08:00 stdout F at org.apache.flink.runtime.taskmanager.Task$TaskCancelerWatchDog.run(Task.java:1709) [flink-dist_2.11-1.12-vvr-3.0.4-SNAPSHOT.jar:1.12-vvr-3.0.4-SNAPSHOT]
    2022-04-22T17:32:25.852867996+08:00 stdout F at java.lang.Thread.run(Thread.java:834) [?:1.8.0_102]
    log_level:ERROR
  • Causa

    Este error no indica la causa raíz. Significa que la salida de la tarea se bloqueó durante un failover o cancelación por más tiempo que el valor predeterminado de task.cancellation.timeout de 180 segundos. Realtime Compute for Apache Flink considera la tarea como irrecuperable, detiene el TaskManager afectado y permite que continúe el failover o la cancelación.

    Esto suele deberse a funciones definidas por el usuario (UDF). Por ejemplo, si el método close de una UDF se bloquea o no retorna, la tarea no puede finalizar.

  • Solución

    Para depurar, establezca task.cancellation.timeout en 0. How do I configure custom runtime parameters for a job? Cuando se establece en 0, una tarea bloqueada espera indefinidamente para salir sin activar un tiempo de espera. Si el failover se activa nuevamente o una tarea permanece bloqueada después del reinicio, localice la tarea en estado CANCELLING, inspeccione su stack trace y corrija la causa raíz.

    Importante

    El parámetro task.cancellation.timeout es solo para depuración. No lo establezca en 0 en producción. Utilice un tiempo de espera adecuado y corrija el problema subyacente en la UDF o en la lógica de negocio.

¿Qué debo hacer cuando aparece el mensaje de error "Can not retract a non-existent record. This should never happen."?

  • Descripción del problema

    java.lang.RuntimeException: Can not retract a non-existent record. This should never happen.
        at org.apache.flink.table.runtime.operators.rank.RetractableTopNFunction.processElement(RetractableTopNFunction.java:196)
        at org.apache.flink.table.runtime.operators.rank.RetractableTopNFunction.processElement(RetractableTopNFunction.java:55)
        at org.apache.flink.streaming.api.operators.KeyedProcessOperator.processElement(KeyedProcessOperator.java:83)
        at org.apache.flink.streaming.runtime.tasks.OneInputStreamTask$StreamTaskNetworkOutput.emitRecord(OneInputStreamTask.java:205)
        at org.apache.flink.streaming.runtime.io.AbstractStreamTaskNetworkInput.processElement(AbstractStreamTaskNetworkInput.java:135)
        at org.apache.flink.streaming.runtime.io.AbstractStreamTaskNetworkInput.emitNext(AbstractStreamTaskNetworkInput.java:106)
        at org.apache.flink.streaming.runtime.io.StreamOneInputProcessor.processInput(StreamOneInputProcessor.java:66)
        at org.apache.flink.streaming.runtime.tasks.StreamTask.processInput(StreamTask.java:424)
        at org.apache.flink.streaming.runtime.tasks.mailbox.MailboxProcessor.runMailboxLoop(MailboxProcessor.java:204)
        at org.apache.flink.streaming.runtime.tasks.StreamTask.runMailboxLoop(StreamTask.java:685)
        at org.apache.flink.streaming.runtime.tasks.StreamTask.executeInvoke(StreamTask.java:640)
        at org.apache.flink.streaming.runtime.tasks.StreamTask.runWithCleanUpOnFail(StreamTask.java:651)
        at org.apache.flink.streaming.runtime.tasks.StreamTask.invoke(StreamTask.java:624)
        at org.apache.flink.runtime.taskmanager.Task.doRun(Task.java:799)
        at org.apache.flink.runtime.taskmanager.Task.run(Task.java:586)
        at java.lang.Thread.run(Thread.java:877)
                        
  • Causas y soluciones

    Escenario

    Causa

    Solución

    Escenario 1

    El problema se debe a la función now() en el código.

    El algoritmo TopN no permite usar un campo no determinista en la cláusula ORDER BY o PARTITION BY. Si se utiliza un campo no determinista, los valores retornados por la función now() son diferentes para cada registro y no se puede encontrar el valor anterior en el estado.

    Utilice un campo determinista en la cláusula ORDER BY o PARTITION BY.

    Escenario 2

    El parámetro table.exec.state.ttl está configurado con un valor excesivamente pequeño. Como resultado, las entradas de estado caducan y se eliminan, y no se encuentra el estado de clave requerido.

    Aumente el valor de table.exec.state.ttl. How do I configure custom runtime parameters for a job?

¿Cómo puedo corregir el mensaje de error "The GRPC call timed out in sqlserver"?

  • Descripción del problema

    org.apache.flink.table.sqlserver.utils.ExecutionTimeoutException: The GRPC call timed out in sqlserver, please check the thread stacktrace for root cause:
    
    Thread name: sqlserver-operation-pool-thread-4, thread state: TIMED_WAITING, thread stacktrace:
        at java.lang.Thread.sleep0(Native Method)
        at java.lang.Thread.sleep(Thread.java:360)
        at org.apache.hadoop.io.retry.RetryInvocationHandler$Call.processWaitTimeAndRetryInfo(RetryInvocationHandler.java:130)
        at org.apache.hadoop.io.retry.RetryInvocationHandler$Call.invokeOnce(RetryInvocationHandler.java:107)
        at org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:359)
        at com.sun.proxy.$Proxy195.getFileInfo(Unknown Source)
        at org.apache.hadoop.hdfs.DFSClient.getFileInfo(DFSClient.java:1661)
        at org.apache.hadoop.hdfs.DistributedFileSystem$29.doCall(DistributedFileSystem.java:1577)
        at org.apache.hadoop.hdfs.DistributedFileSystem$29.doCall(DistributedFileSystem.java:1574)
        at org.apache.hadoop.fs.FileSystemLinkResolver.resolve(FileSystemLinkResolver.java:81)
        at org.apache.hadoop.hdfs.DistributedFileSystem.getFileStatus(DistributedFileSystem.java:1589)
        at org.apache.hadoop.fs.FileSystem.exists(FileSystem.java:1683)
        at org.apache.flink.connectors.hive.HiveSourceFileEnumerator.getNumFiles(HiveSourceFileEnumerator.java:118)
        at org.apache.flink.connectors.hive.HiveTableSource.lambda$getDataStream$0(HiveTableSource.java:209)
        at org.apache.flink.connectors.hive.HiveTableSource$$Lambda$972/1139330351.get(Unknown Source)
        at org.apache.flink.connectors.hive.HiveParallelismInference.logRunningTime(HiveParallelismInference.java:118)
        at org.apache.flink.connectors.hive.HiveParallelismInference.infer(HiveParallelismInference.java:100)
        at org.apache.flink.connectors.hive.HiveTableSource.getDataStream(HiveTableSource.java:207)
        at org.apache.flink.connectors.hive.HiveTableSource$1.produceDataStream(HiveTableSource.java:123)
        at org.apache.flink.table.planner.plan.nodes.exec.common.CommonExecTableSourceScan.translateToPlanInternal(CommonExecTableSourceScan.java:127)
        at org.apache.flink.table.planner.plan.nodes.exec.ExecNodeBase.translateToPlan(ExecNodeBase.java:226)
        at org.apache.flink.table.planner.plan.nodes.exec.ExecEdge.translateToPlan(ExecEdge.java:290)
        at org.apache.flink.table.planner.plan.nodes.exec.ExecNodeBase.lambda$translateInputToPlan$5(ExecNodeBase.java:267)
        at org.apache.flink.table.planner.plan.nodes.exec.ExecNodeBase$$Lambda$949/77002396.apply(Unknown Source)
        at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
        at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
        at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
        at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
        at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
        at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
        at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
        at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)
        at org.apache.flink.table.planner.plan.nodes.exec.ExecNodeBase.translateInputToPlan(ExecNodeBase.java:268)
        at org.apache.flink.table.planner.plan.nodes.exec.ExecNodeBase.translateInputToPlan(ExecNodeBase.java:241)
        at org.apache.flink.table.planner.plan.nodes.exec.stream.StreamExecExchange.translateToPlanInternal(StreamExecExchange.java:87)
        at org.apache.flink.table.planner.plan.nodes.exec.ExecNodeBase.translateToPlan(ExecNodeBase.java:226)
        at org.apache.flink.table.planner.plan.nodes.exec.ExecEdge.translateToPlan(ExecEdge.java:290)
        at org.apache.flink.table.planner.plan.nodes.exec.ExecNodeBase.lambda$translateInputToPlan$5(ExecNodeBase.java:267)
        at org.apache.flink.table.planner.plan.nodes.exec.ExecNodeBase$$Lambda$949/77002396.apply(Unknown Source)
        at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
        at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
        at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
        at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
        at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
        at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
        at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
        at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)
        at org.apache.flink.table.planner.plan.nodes.exec.ExecNodeBase.translateInputToPlan(ExecNodeBase.java:268)
        at org.apache.flink.table.planner.plan.nodes.exec.ExecNodeBase.translateInputToPlan(ExecNodeBase.java:241)
        at org.apache.flink.table.planner.plan.nodes.exec.stream.StreamExecGroupAggregate.translateToPlanInternal(StreamExecGroupAggregate.java:148)
        at org.apache.flink.table.planner.plan.nodes.exec.ExecNodeBase.translateToPlan(ExecNodeBase.java:226)
        at org.apache.flink.table.planner.plan.nodes.exec.ExecEdge.translateToPlan(ExecEdge.java:290)
        at org.apache.flink.table.planner.plan.nodes.exec.ExecNodeBase.lambda$translateInputToPlan$5(ExecNodeBase.java:267)
        at org.apache.flink.table.planner.plan.nodes.exec.ExecNodeBase$$Lambda$949/77002396.apply(Unknown Source)
        at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
        at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
        at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
        at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
        at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
        at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
        at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
        at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)
        at org.apache.flink.table.planner.plan.nodes.exec.ExecNodeBase.translateInputToPlan(ExecNodeBase.java:268)
        at org.apache.flink.table.planner.plan.nodes.exec.ExecNodeBase.translateInputToPlan(ExecNodeBase.java:241)
        at org.apache.flink.table.planner.plan.nodes.exec.stream.StreamExecSink.translateToPlanInternal(StreamExecSink.java:108)
        at org.apache.flink.table.planner.plan.nodes.exec.ExecNodeBase.translateToPlan(ExecNodeBase.java:226)
        at org.apache.flink.table.planner.delegation.StreamPlanner$$anonfun$1.apply(StreamPlanner.scala:74)
        at org.apache.flink.table.planner.delegation.StreamPlanner$$anonfun$1.apply(StreamPlanner.scala:73)
        at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
        at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
        at scala.collection.Iterator$class.foreach(Iterator.scala:891)
        at scala.collection.AbstractIterator.foreach(Iterator.scala:1334)
        at scala.collection.IterableLike$class.foreach(IterableLike.scala:72)
        at scala.collection.AbstractIterable.foreach(Iterable.scala:54)
        at scala.collection.TraversableLike$class.map(TraversableLike.scala:234)
        at scala.collection.AbstractTraversable.map(Traversable.scala:104)
        at org.apache.flink.table.planner.delegation.StreamPlanner.translateToPlan(StreamPlanner.scala:73)
        at org.apache.flink.table.planner.delegation.StreamExecutor.createStreamGraph(StreamExecutor.java:52)
        at org.apache.flink.table.planner.delegation.PlannerBase.createStreamGraph(PlannerBase.scala:610)
        at org.apache.flink.table.planner.delegation.StreamPlanner.explainExecNodeGraphInternal(StreamPlanner.scala:166)
        at org.apache.flink.table.planner.delegation.StreamPlanner.explainExecNodeGraph(StreamPlanner.scala:159)
        at org.apache.flink.table.sqlserver.execution.OperationExecutorImpl.validate(OperationExecutorImpl.java:304)
        at org.apache.flink.table.sqlserver.execution.OperationExecutorImpl.validate(OperationExecutorImpl.java:288)
        at org.apache.flink.table.sqlserver.execution.DelegateOperationExecutor.lambda$validate$22(DelegateOperationExecutor.java:211)
        at org.apache.flink.table.sqlserver.execution.DelegateOperationExecutor$$Lambda$394/1626790418.run(Unknown Source)
        at org.apache.flink.table.sqlserver.execution.DelegateOperationExecutor.wrapClassLoader(DelegateOperationExecutor.java:250)
        at org.apache.flink.table.sqlserver.execution.DelegateOperationExecutor.lambda$wrapExecutor$26(DelegateOperationExecutor.java:275)
        at org.apache.flink.table.sqlserver.execution.DelegateOperationExecutor$$Lambda$395/1157752141.run(Unknown Source)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1147)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:622)
        at java.lang.Thread.run(Thread.java:834)
    
        at org.apache.flink.table.sqlserver.execution.DelegateOperationExecutor.wrapExecutor(DelegateOperationExecutor.java:281)
        at org.apache.flink.table.sqlserver.execution.DelegateOperationExecutor.validate(DelegateOperationExecutor.java:211)
        at org.apache.flink.table.sqlserver.FlinkSqlServiceImpl.validate(FlinkSqlServiceImpl.java:786)
        at org.apache.flink.table.sqlserver.proto.FlinkSqlServiceGrpc$MethodHandlers.invoke(FlinkSqlServiceGrpc.java:2522)
        at io.grpc.stub.ServerCalls$UnaryServerCallHandler$UnaryServerCallListener.onHalfClose(ServerCalls.java:172)
        at io.grpc.internal.ServerCallImpl$ServerStreamListenerImpl.halfClosed(ServerCallImpl.java:331)
        at io.grpc.internal.ServerImpl$JumpToApplicationThreadServerStreamListener$1HalfClosed.runInContext(ServerImpl.java:820)
        at io.grpc.internal.ContextRunnable.run(ContextRunnable.java:37)
        at io.grpc.internal.SerializingExecutor.run(SerializingExecutor.java:123)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1147)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:622)
        at java.lang.Thread.run(Thread.java:834)
    Caused by: java.util.concurrent.TimeoutException
        at java.util.concurrent.FutureTask.get(FutureTask.java:205)
        at org.apache.flink.table.sqlserver.execution.DelegateOperationExecutor.wrapExecutor(DelegateOperationExecutor.java:277)
        ... 11 more
                        
  • Causa

    Una consulta SQL compleja en el borrador provoca un tiempo de espera en la ejecución RPC.

  • Solución

    Agregue el siguiente código al campo Other Configuration en la sección Parameters de la pestaña Configuration para aumentar el tiempo de espera de RPC. El valor predeterminado es 120 segundos. Para obtener más información, consulte Configure custom running parameters

    flink.sqlserver.rpc.execution.timeout: 600s

¿Cómo puedo resolver el mensaje de error "RESOURCE_EXHAUSTED: gRPC message exceeds maximum size 41943040: 58384051"?

  • Descripción del problema

    Caused by: io.grpc.StatusRuntimeException: RESOURCE_EXHAUSTED: gRPC message exceeds maximum size 41943040: 58384051
    
    at io.grpc.stub.ClientCalls.toStatusRuntimeException(ClientCalls.java:244)
    
    at io.grpc.stub.ClientCalls.getUnchecked(ClientCalls.java:225)
    
    at io.grpc.stub.ClientCalls.blockingUnaryCall(ClientCalls.java:142)
    
    at org.apache.flink.table.sqlserver.proto.FlinkSqlServiceGrpc$FlinkSqlServiceBlockingStub.generateJobGraph(FlinkSqlServiceGrpc.java:2478)
    
    at org.apache.flink.table.sqlserver.api.client.FlinkSqlServerProtoClientImpl.generateJobGraph(FlinkSqlServerProtoClientImpl.java:456)
    
    at org.apache.flink.table.sqlserver.api.client.ErrorHandlingProtoClient.lambda$generateJobGraph$25(ErrorHandlingProtoClient.java:251)
    
    at org.apache.flink.table.sqlserver.api.client.ErrorHandlingProtoClient.invokeRequest(ErrorHandlingProtoClient.java:335)
    
    ... 6 more
    Cause: RESOURCE_EXHAUSTED: gRPC message exceeds maximum size 41943040: 58384051)
  • Causa

    El JobGraph es demasiado grande debido a una lógica compleja en el borrador. Esto provoca errores de validación o impide que el job del borrador se inicie o se cancele.

  • Solución

    Agregue el siguiente código al campo Other Configuration en la sección Parameters de la pestaña Configuration. How do I configure custom runtime parameters for a job?

     table.exec.operator-name.max-length: 1000

¿Qué debo hacer si aparece el mensaje de error "Caused by: java.lang.NoSuchMethodError"?

  • Descripción del problema

    Error message: Caused by: java.lang.NoSuchMethodError: org.apache.flink.table.planner.plan.metadata.FlinkRelMetadataQuery.getUpsertKeysInKeyGroupRange(Lorg/apache/calcite/rel/RelNode;[I)Ljava/util/Set;
  • Causa

    Si llama a una API de Apache Flink y Realtime Compute for Apache Flink proporciona una versión optimizada, puede producirse una excepción como un conflicto de paquetes.

  • Solución

    Limite sus llamadas de métodos a aquellos marcados explícitamente con @Public o @PublicEvolving en el código fuente de Apache Flink. Realtime Compute for Apache Flink garantiza la compatibilidad con dichos métodos.

¿Qué debo hacer si aparece el mensaje de error "java.lang.ClassCastException: org.codehaus.janino.CompilerFactory cannot be cast to org.codehaus.commons.compiler.ICompilerFactory"?

  • Descripción del problema

    Causedby:java.lang.ClassCastException:org.codehaus.janino.CompilerFactorycannotbecasttoorg.codehaus.commons.compiler.ICompilerFactory
        atorg.codehaus.commons.compiler.CompilerFactoryFactory.getCompilerFactory(CompilerFactoryFactory.java:129)
        atorg.codehaus.commons.compiler.CompilerFactoryFactory.getDefaultCompilerFactory(CompilerFactoryFactory.java:79)
        atorg.apache.calcite.rel.metadata.JaninoRelMetadataProvider.compile(JaninoRelMetadataProvider.java:426)
        ...66more
  • Causa

    • El paquete JAR contiene una dependencia de Janino que provoca un conflicto.

    • Se agregaron paquetes JAR específicos que comienzan con Flink-, como flink-table-planner y flink-table-runtime, al paquete JAR de la UDF o del conector.

  • Soluciones

    • Compruebe si el paquete JAR contiene org.codehaus.janino.CompilerFactory. Pueden producirse conflictos de clases porque la secuencia de carga de clases varía entre distintas máquinas. Para resolver este problema, siga estos pasos:

      1. En el menú de navegación izquierdo de Development Console, elija O&M > Deployments. En la página Deployments, localice el trabajo objetivo y haga clic en su nombre.

      2. En la pestaña Configuration de la página de detalles del trabajo, haga clic en Edit en la esquina superior derecha de la sección Parameters.

      3. Agregue el siguiente código al campo Other Configuration y haga clic en Save.

        classloader.parent-first-patterns.additional: org.codehaus.janino

        Reemplace el valor del parámetro classloader.parent-first-patterns.additional con la clase en conflicto.

    • Especifique <scope>provided</scope> para las dependencias de Apache Flink, como las dependencias que no son conectores y cuyos nombres comienzan con flink- en el grupo org.apache.flink.