Таки в среду написал такой партишенер, работает
пришлось сделать классы на основе:
org.apache.spark.sql.catalyst.plans.logical.RepartitionByExpression //логический план
org.apache.spark.sql.catalyst.plans.physical.HashPartitioning //физический план
org.apache.spark.sql.execution.SparkStrategy //для инъекции SparkSessionExtensions
org.apache.spark.sql.execution.exchange.ShuffleExchangeExec //выполнение
и еще один impicit class, чтобы вызывать метод, а не оборачивать в функцию
На тестах работает хорошо, проверю на данных
Смотрел ресурс
https://www.waitingforcode.com/apache-spark-sqlТам много статей про расширение Spark, но подача не так чтобы очень доходчивая