В Spark 2.4 разве Spark JDBC не позволяет указывать встроенную функцию в качестве partitionColumn?

#apache-spark #apache-spark-sql

#apache-искра #apache-spark-sql

Вопрос:

Я пытаюсь изменить spark версии 2.2.1 на 2.4.0 В spark 2.2, следующее сработало нормально.

 val query = "(select id, myPartitionColumnString from myTable) query"
val splitColumn = "CHECKSUM(myPartitionColumnString)"
spark.read.jdbc(jdbcUrl, query, splitColumn, lowerBound, upperBound, numPartitions, connectionProperties)
  

Но в spark 2.4 это вызывает ошибку, подобную этой

 User-defined partition column CHECKSUM(myPartitionColumnString) not found in the JDBC relation: struct<id: int, myPartitionColumnString: string>
  

Я уверен, что контрольная сумма определена.

Ответ №1:

Они удалили это во время внедрения функции «передать прямой SQL-запрос». Решающее изменение было внесено в версии 2.4.0. Это был скорее взлом, сейчас этого добиться невозможно. Вы все еще можете получить его за 2,3 тыс.

PS: если кто-то найдет другой способ добиться такого же поведения, пожалуйста, свяжитесь со мной, мне очень интересно