我正在尝试将 Spark 版本 2.2.1 更改为 2.4.0在火花 2.2 中,跟随工作正常。
val query = "(select id, myPartitionColumnString from myTable) query"
val splitColumn = "CHECKSUM(myPartitionColumnString)"
spark.read.jdbc(jdbcUrl, query, splitColumn, lowerBound, upperBound, numPartitions, connectionProperties)
但是在火花 2.4 中,它会导致这样的错误
User-defined partition column CHECKSUM(myPartitionColumnString) not found in the JDBC relation: struct<id: int, myPartitionColumnString: string>
我确定校验和已定义。
他们在引入"传递直接SQL查询"功能时将其删除。中断性变更是在 2.4.0 中引入的。这更像是一种黑客攻击,现在没有办法实现这一目标。你仍然可以在 2.3 tho 中得到它
PS:如果有人找到另一种实现相同行为的方法,请与我联系,我很感兴趣