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.

WriteStream con el formato (‘console’) en Azure Synapse Notebook

Tengo un flujo de datos que puedo escribir en una tabla en memoria con pyspark y consultarla con sql desde allí:

transformeddata.writeStream\
   .format("memory")\
   .queryName("transformeddatatable")\
   .trigger(processingTime='5 seconds')\
   .start()\
   .awaitTermination(20)  # escribir los datos durante 20 segundos en la tabla en memoria desde el flujo

En la siguiente celda puedo consultar los datos:

%%sql
SELECT * FROM transformeddatatable

Esto funciona bien y los datos aparecen en la tabla en memoria transformeddatatable.

Sin embargo, no puedo mostrar los datos directamente en la consola:

transformeddata.writeStream\
   .format("console")\
   .outputMode("append")\
   .trigger(processingTime='5 seconds') \
   .option("checkpointLocation", "tmp/checkpoint/streamtoconsole/")\
   .start()\
   .awaitTermination(20)

Lo único que se devuelve en la consola es un valor booleano de False una vez que termina después de 20 segundos.

En muchos ejemplos en línea, el código anterior funciona. Estoy desconcertado por lo que estoy haciendo mal: ¿es un problema del Cuaderno de Azure Synapse? ¿Solo funciona con Databricks?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Como experto en tecnología de la información especializado en Azure, Pyspark y Spark-streaming, puedo sugerir que el problema puede no estar relacionado con el cuaderno o Databricks, sino más bien con el entorno y la forma en que se está procesando el flujo de datos transformeddata. Es posible que los datos no se estén transformando de tal manera que puedan mostrarse en la consola.

    Otra posible razón es que el método awaitTermination() se esté utilizando con un límite de tiempo de 20 segundos, lo cual puede ser demasiado corto para que el flujo se procese y se muestre por completo. Se recomienda utilizar un límite de tiempo más largo o, en su lugar, utilizar el método untilStreamIsReady().

    Además, puede ser que la salida se esté redirigiendo a un archivo en lugar de a la consola. En este caso, se debe cambiar el formato console a console. De manera similar, el parámetro outputMode puede necesitar establecerse en complete o update.

    Por último, la ubicación de control de punto especificada en el código puede no existir, lo que provoca un error que impide que se muestre la salida. Verificar que la ubicación de control de punto exista podría ayudar a resolver este problema.

    En general, hay varias razones posibles por las cuales los datos pueden no mostrarse en la consola, y se debe llevar a cabo la solución de problemas de estas posibles causas.

Comments are closed.