Spark: Является ли оконная функция альтернативой пользовательским разделителям? - PullRequest
0 голосов
/ 16 мая 2018

Я немного сбит с толку тем, как настраиваемые разделители (RDD) действительно применяются в последних версиях Spark (для Dataframes / Datasets). Могут ли все пользовательские разделители обрабатываться через оконные функции SparkSQL? Или нам нужно переходить туда и обратно между rdd и наборами данных / наборами данных при пользовательском разбиении?

В основном, это для разделения данных со сложными ключами и сортировки в них.

class CustomePartitioner(partitions: Int) extends Partitioner {
    override def numPartitions: Int = partitions
    override def getPartition(key: Any): Int = {
      val k = key.asInstanceOf[tmpCaseClass]
      k.tmpCaseClass.SomeId.hashCode() % numPartitions
    }
  }

case clase tmpCaseClass {
    ....
  }

  object tmpCaseClass {
    implicit def orderingById[A <: tmpCaseClass] : Ordering[A] = {
       Ordering.by(fk => (fk.SomeId, fk.SomeName))
    }
  }

У меня нет конкретного примера по этому поводу, так как мне не ясно. Может кто-нибудь объяснить, например, или указать на уже отвеченную тему, которая точно объясняет это?

...