在PySpark中将Dataframe作为Mysql表写入时,我遇到java.sql.BatchUpdateException: Data truncation: Data too long for column
错误,这意味着数据超过了Mysql TEXT
类型允许的最大值。
如JdbcUtils.getCommonJDBCType method所示,TEXT
是Catalyst StringType
的默认JDBC类型:
def getCommonJDBCType(dt: DataType): Option[JdbcType] = {
dt match {
...
case StringType => Option(JdbcType("TEXT", java.sql.Types.CLOB))
...
}
}
我想知道,有没有办法使用Dataframe的write.jdbc
方法手动定义Catalyst Type(StringType)和JDBC类型(LONGTEXT)之间的关系?