Spark是否在其群集中维护哈希函数?

Car*_*cas 4 java scala object hashcode apache-spark

总承包hashCode

从应用程序的一次执行到同一应用程序的另一次执行,该整数不需要保持一致.

因此对于类似Spark的东西,每个执行器都有单独的JVM,它是否可以确保散列代码在整个群集中保持一致?

根据我的经验,我使用具有确定性哈希的东西,所以它不是一个问题.

Tza*_*har 6

根据我的经验,我使用具有确定性哈希的东西,所以它不是一个问题.

这确实是要走的路,Spark 无法克服具有非确定性哈希码的对象的使用.

Java Enums的使用是一个特别臭名昭着的例子,说明如何出错,请参阅:http://dev.bizo.com/2014/02/beware-enums-in-spark.html.引用该帖子:

... Java的枚举类型的hashCode方法基于对象的内存地址.所以虽然是的,我们保证相同的枚举值在特定的JVM中有一个稳定的hashCode(因为枚举将是一个静态对象) - 当你尝试比较Java枚举的hashCodes时,我们没有这个保证生活在不同JVM中的价值观