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.

El modo de sobrescritura no funciona en spark-sql mientras se agrega datos en db2.

Soy nuevo en Spark y DB2. Tengo un marco de datos conmigo generado a partir de varias fuentes y lo estoy almacenando en una tabla DB2. Estoy utilizando el modo ‘Sobrescribir’ para hacer esto, ya que quiero que el registro existente se elimine automáticamente sin ninguna condición.

Al ejecutar este comando –
df.write.mode(“sobrescribir”).jdbc(fullJdbcUrl, tableName, props)

arroja este error –
com.ibm.db2.jcc.am.SqlSyntaxErrorException: Error SQL DB2: SQLCODE = -551, SQLSTATE = 42501

Entiendo los códigos de error.

Según el ticket https://issues.apache.org/jira/browse/SPARK-16463, han actualizado la funcionalidad para truncar o eliminar la tabla mientras se sobrescribe los datos, pero cuando lo pruebo, todavía no funciona.

df.write.option(“recortar”, “verdadero”).mode(“sobrescribir”).jdbc(fullJdbcUrl, tableName, props)

arroja este error –
com.ibm.db2.jcc.am.SqlSyntaxErrorException: Error SQL DB2: SQLCODE = -104, SQLSTATE = 42601, SQLERRMC = END-OF-STATEMENT;

¿Me he perdido algo en el código o han agregado una nueva funcionalidad?

También estaba buscando en – DataFrameWriterV2 (https://spark.apache.org/docs/latest/api/java/org/apache/spark/sql/DataFrameWriterV2.html) pero no estoy seguro de cómo implementarlo.

La versión de Spark es – 3.1.1.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Parece que estás teniendo problemas con la API DataFrameWriterV2. Parece que la opción truncate no está soportada en la versión de Spark que estás utilizando (3.1.1). Es posible que desees intentar actualizar a una versión más nueva de Spark para ver si eso resuelve el problema.

    Alternativamente, podrías intentar utilizar el comando df.write.mode("overwrite").jdbc(), pero tendrías que eliminar manualmente los registros existentes en la tabla DB2 antes de ejecutar el comando.

Comments are closed.