Buen día. Estoy implementando un trabajo de transmisión para insertar datos de Spark (Scala) en Postgres.

df.select("col1","col2").write.mode(SaveMode.Append).jdbc(url, "tableName", connectionProperties)

Aquí col2 tiene valores uuid en el marco de datos df, pero es un tipo de datos de cadena. Cuando intenta insertar en la tabla que tiene la columna col2 definida como tipo uuid, falla con Column is of type uuid but expression is of type character varying. ¿Alguien puede ayudarme con una solución para esto? ?

Gracias.

0
Ranjith 25 feb. 2021 a las 09:11

1 respuesta

La mejor respuesta

Cuando tiene una columna de columna en un marco de datos que tiene un tipo de datos de cadena pero tiene valores de tipo UUID, puede establecer la propiedad específica en las propiedades de su conexión y eso le permitirá guardar su marco de datos. Si no establece esa propiedad, no le permitirá guardar los datos en la tabla sql / postgres, si la columna tiene el tipo de datos UUID.

Puede establecer esta propiedad en las Propiedades de conexión

connectionProps.setProperty("stringtype", "unspecified")

Establecer la propiedad anterior le permitirá guardar la columna de tipo de cadena que tiene valores UUID en el marco de datos en una columna de tipo UUID en la base de datos de postgres.

1
Nikunj Kakadiya 1 mar. 2021 a las 04:09