我真的很担心自定义分区程序(RDD)如何真正应用于最新的spark版本(在Dataframes / Datasets上)。 可以通过SparkSQL的Window函数处理所有自定义分区器吗? 或者我们是否需要在自定义分区时在rdd和dataframes /数据集之间来回切换?
主要是用复杂的密钥对数据进行分区并在其中进行排序。
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))
}
}
我没有任何具体的例子,因为我不清楚。 有人可以用一个例子来解释一下,还是指出一个已经回答的主题,这个主题可以解释这个问题?