Errores comunes en tiempo de ejecución de jobs y sus soluciones en Realtime Compute for Apache Flink.
What do I do if data in tasks of a job is not consumed after the job is run?
Why is data output suspended on the LocalGroupAggregate operator?
What do I do if Kafka partition idleness delays window output?
What do I do when the "INFO: org.apache.flink.fs.osshadoop.shaded.com.aliyun.oss" message appears?
What do I do if the error message "akka.pattern.AskTimeoutException" appears?
What do I do if the error message "Task did not exit gracefully within 180 + seconds." appears?
How can I fix the error message "The GRPC call timed out in sqlserver"?
What do I do if the error message "Caused by: java.lang.NoSuchMethodError" appears?
¿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: resourcequotaRecursos 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 enoughDirecciones 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 failedPar 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.sizeno 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:
En el menú de navegación izquierdo de la Development Console, elija . En la página Deployments, busque el despliegue del job objetivo y haga clic en su nombre.
Haga clic en la pestaña Events.
-
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-argsen 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.timeoutyheartbeat.timeouten valores mayores.ImportanteAjuste
akka.ask.timeoutyheartbeat.timeoutsolo 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.NotaPara evitar errores, no incluya la unidad en el valor.
-
heartbeat.timeout: Valor predeterminado: 50000. Valor recomendado: 600000. Unidad: milisegundos.NotaPara 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ámetroconnection.pool.sizedescrito en los parámetros WITH de MySQL. Valor predeterminado: 20.NotaDetermine 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 declient.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.timeoutde 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.timeouten 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.ImportanteEl parámetro
task.cancellation.timeoutes 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.ttlestá 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-, comoflink-table-planneryflink-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:En el menú de navegación izquierdo de Development Console, elija . En la página Deployments, localice el trabajo objetivo y haga clic en su nombre.
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.
-
Agregue el siguiente código al campo Other Configuration y haga clic en Save.
classloader.parent-first-patterns.additional: org.codehaus.janinoReemplace el valor del parámetro
classloader.parent-first-patterns.additionalcon 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 conflink-en el grupoorg.apache.flink.
-