Apache spark 如何在使用哈希分区器时平衡负载?
在apachespark->中,通过使用散列分区er,我相信具有相同散列值的密钥将进入同一节点?如果大多数密钥都转到同一个分区er,那么在这种情况下如何平衡多个工作节点上的数据呢。请帮帮我,医生说 是。你是对的。所以,如果密钥的分布不一致,那么最终可能会出现集群的一部分处于空闲状态的情况 您的责任是确保密钥均匀分布在各个应用程序中。(这意味着哈希代码不应相同) 为此,您需要更好地了解Apache spark 如何在使用哈希分区器时平衡负载?,apache-spark,hash,partitioning,Apache Spark,Hash,Partitioning,在apachespark->中,通过使用散列分区er,我相信具有相同散列值的密钥将进入同一节点?如果大多数密钥都转到同一个分区er,那么在这种情况下如何平衡多个工作节点上的数据呢。请帮帮我,医生说 是。你是对的。所以,如果密钥的分布不一致,那么最终可能会出现集群的一部分处于空闲状态的情况 您的责任是确保密钥均匀分布在各个应用程序中。(这意味着哈希代码不应相同) 为此,您需要更好地了解HashPartitioner及其内部功能 注意:密钥的哈希代码将只是密钥本身。HashPartitioner将使
HashPartitioner
及其内部功能
注意:密钥的哈希代码将只是密钥本身。HashPartitioner
将使用总分区数对其进行修改。i、 e hashcode Mod和totnumpartions
HashPartitioner
def nonNegativeMod(x: Int, mod: Int): Int = {
val rawMod = x % mod
rawMod + (if (rawMod < 0) mod else 0)
}
def nonNegativeMod(x:Int,mod:Int):Int={
val rawMod=x%mod
rawMod+(如果(rawMod<0)mod else 0)
}
- 为了更好地理解,请看@user6910411提供的完美示例