Getting py4j.protocol.Py4JJavaError: An error occurred while calling o65.jdbc. : java.sql.SQLException: Unsupported type TIMESTAMP_WITH_TIMEZONE

Getting py4j.protocol.Py4JJavaError: An error occurred while calling o65.jdbc. : java.sql.SQLException: Unsupported type TIMESTAMP_WITH_TIMEZONE

我正在使用 pyspark JDBC 连接到 Denodo 数据库。我正在连接的 table 包含 2 列的“TIMESTAMP_WITH_TIMEZONE”数据类型。由于 spark 仅提供与少数 dbs 的内置 jdbc 连接,而 denodo 不是其中的一部分,因此它无法识别“TIMESTAMP_WITH_TIMEZONE”数据类型,因此无法映射到其任何 spark sql 数据类型。 为了克服这个问题,我提供了我的自定义架构(c_schema 此处),但这效果不佳,我遇到了同样的错误。下面是代码片段。

c_schema="game start date TIMESTAMP,game end date TIMESTAMP" 
    
df = spark.read.jdbc("jdbc_url", "schema.table_name",properties={"user": "user_name", "password": "password","customSchema":c_schema,"driver": "com.denodo.vdp.jdbc.Driver"})

请告诉我如何解决这个问题。

对于使用 spark 连接到 denodo 时遇到此问题的任何其他人,请使用 CAST 函数将数据类型“TIMESTAMP_WITH_TIMEZONE”转换为任何其他数据类型,如字符串、日期或时间戳等。我已将此问题发布在denodo 社区页面也是,我附上了它的官方回复。

CAST("PLANNED START DATE" as DATE) as "PLANNED_START_DATE"