johannesson
Nuestros informes y conjuntos de datos importan datos de las tablas Spark Delta de Databricks mediante el conector Spark a nuestra capacidad Premium P1. Usamos la actualización incremental para las tablas más grandes (de hechos), pero tenemos problemas con la actualización inicial después de publicar el archivo pbix. Al actualizar grandes conjuntos de datos, a menudo falla después de 30 a 60 minutos con varios errores como los que se muestran a continuación. ¿Cómo podemos hacer que la actualización sea más estable para poder usar grandes conjuntos de datos en Power BI?
Data source error: ODBC: ERROR [HY000] [Microsoft][Hardy] (35) Error from server: error code: '0' error message: 'Error running query: org.apache.spark.SparkException: Job aborted due to stage failure: Task 5 in stage 588.0 failed 4 times, most recent failure: Lost task 5.3 in stage 588.0 (TID 2196, 10.139.64.4, executor 24): ExecutorLostFailure (executor 24 exited caused by one of the running tasks) Reason: Remote RPC client disassociated. Likely due to containers exceeding thresholds, or network issues. Check driver logs for WARN messages. Driver stacktrace:'.. The exception was raised by the IDbCommand interface.
Data source error: ODBC: ERROR [HY000] [Microsoft][Hardy] (35) Error from server: error code: '0' error message: 'Error running query: org.apache.spark.SparkException: Job aborted due to stage failure: Total size of serialized results of 19 tasks (4.2 GB) is bigger than spark.driver.maxResultSize (4.0 GB)'.. The exception was raised by the IDbCommand interface.
Data source error: ODBC: ERROR [HY000] [Microsoft][Hardy] (35) Error from server: error code: '0' error message: 'Error running query: org.apache.spark.SparkException: Job aborted due to stage failure: Task 8 in stage 309.0 failed 4 times, most recent failure: Lost task 8.3 in stage 309.0 (TID 966, 10.139.64.4, executor 13): java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOf(Arrays.java:3236) at java.io.ByteArrayOutputStream.grow(ByteArrayOutputStream.java:118) at java.io.ByteArrayOutputStream.ensureCapacity(ByteArrayOutputStream.java:93) at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:153) at org.apache.spark.util.ByteBufferOutputStream.write(ByteBufferOutputStream.scala:41) at java.io.ObjectOutputStream$BlockDataOutputStream.drain(ObjectOutputStream.java:1877) at java.io.ObjectOutputStream$BlockDataOutputStream.setBlockDataMode(ObjectOutputStream.java:1786) at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1189) at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348) at org.apache.spark.serializer.JavaSerializationStream.writeObject(JavaSerializer.scala:43) at org.apache.spark.serializer.JavaSerializerInstance.serialize(JavaSerializer.scala:100) at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:654) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Driver stacktrace:'.. The exception was raised by the IDbCommand interface.
Data source error: ODBC: ERROR [HY000] [Microsoft][Hardy] (35) Error from server: error code: '0' error message: 'Error running query: org.apache.spark.SparkException: Job aborted due to stage failure: Task 5 in stage 622.0 failed 4 times, most recent failure: Lost task 5.3 in stage 622.0 (TID 2269, 10.139.64.4, executor 10): java.lang.OutOfMemoryError: Java heap space Driver stacktrace:'.. The exception was raised by the IDbCommand interface.
v-shex-msft
Hola @mjohannesson,
>>Trabajo abortado debido a una falla en la etapa: el tamaño total de los resultados serializados de 19 tareas (4,2 GB) es mayor que spark.driver.maxResultSize (4,0 GB)’. La interfaz IDbCommand generó la excepción.
Por favor, eche un vistazo al siguiente documento sobre el problema maxResultsize:
El trabajo de Apache Spark falla con la excepción maxResultSize
Además, puede echar un vistazo a la configuración de las propiedades de tiempo de espera tanto en la conexión de la base de datos como en el lado del servicio power bi para elegir un tiempo de espera de actualización adecuado. (puede reducir los problemas cuando se activa el procesamiento bi para actualizar grandes conjuntos de datos)
Por cierto, consulte también el siguiente enlace sobre el parámetro opcional ‘tamaño del lote’ si es útil para su escenario.
Cargas de datos Turbo Boost desde Spark usando el conector SQL Spark
Saludos,
Xiaoxin-sheng
promagnus
En respuesta a v-shex-msft
Hola @v-shex-msft,
Gracias por el aporte. En la sección Opciones avanzadas del clúster de Azure Databricks que uso para la actualización de datos, Spark Config ya está configurado en «spark.driver.maxResultSize 0», lo que debería significar que es ilimitado, pero aún algunos de los mensajes de error afirman que está configurado. a 4,0 GB. ¿Porqué es eso?
También mencionó las propiedades de tiempo de espera para la conexión de la base de datos y el servicio Power BI. ¿Dónde puedo encontrar estos?
Gracias,
Magnus
v-shex-msft
En respuesta a promagnus
Hola @promagnus,
N.° 1, parece que el conector power bi aún usa la configuración predeterminada en lugar de la configuración de la fuente de datos, tal vez pueda comunicarse con el equipo power bi para confirmarlo.
#2, Significa el tiempo de espera máximo disponible de la conexión de la fuente de datos, puede verificar la configuración del clúster para conocer las propiedades relacionadas con el tiempo de espera de la sesión.
Configuraciones de clúster#spark-config
Saludos,
Xiaoxin-sheng