2017-08-15 26 views
4

general contracthashCodeSpark是否在整个集群中维护Hash函数?

该整数不必从一个应用的执行保持一致,以同一应用程序的另一执行。

因此,对于像Spark这样每个执行器具有不同JVM的类似的东西,它是否会执行任何操作来确保散列码在整个群集中保持一致?

根据我的经验,我使用具有确定性哈希值的东西,所以它一直没有问题。

回答

6

根据我的经验,我使用具有确定性散列的东西,所以它一直没有问题。

那的确是要走的路,星火不能克服不确定性的哈希码的对象的使用。

Java Enums的使用是一个特别声名狼借的例子,它可能会出错,请参阅:http://dev.bizo.com/2014/02/beware-enums-in-spark.html。引用该帖子:

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