2
所以我想實現使用Spark
與Java
自定義分區,我發現瞭如何做到這一點網上一個很好的例子,但它使用Scala
,我不能爲生命我弄清楚它是如何正確轉換成Java的,所以我可以嘗試實現它。誰能幫忙?下面是示例代碼我在Scala
找到了它:翻譯Scala代碼與Java的星火分區程序
class DomainNamePartitioner(numParts: Int) extends Partitioner {
override def numPartitions: Int = numParts
override def getPartition(key: Any): Int = {
val domain = new Java.net.URL(key.toString).getHost()
val code = (domain.hashCode % numPartitions)
if (code < 0) {
code + numPartitions // Make it non-negative
} else {
code
}
}
// Java equals method to let Spark compare our Partitioner objects
override def equals(other: Any): Boolean = other match {
case dnp: DomainNamePartitioner =>
dnp.numPartitions == numPartitions
case _ =>
false
}
}
嗯,可以模運算真的返回一個負數?或者%在scala中不是模數? – fge
@fge是的,它可以像幾乎所有的C派生語言一樣。 '%'被定義爲餘數,可以是負數。 –