Java中的Spark在执行join或groupWith时如何比较两个键?

Java中的Spark在执行join或groupWith时如何比较两个键?,java,join,apache-spark,Java,Join,Apache Spark,我试着做以下几件事 JavaPairRDD<JsonObject, JsonObject> rdd1 = .. JavaPairRDD<JsonObject, String> rdd2 = .. JavaPairRDD<JsonObject, Tuple2<Iterable<String>, Iterable<JsonObject>>> groupedRDD = rdd1.groupWith(rdd2); javapa

我试着做以下几件事

JavaPairRDD<JsonObject, JsonObject> rdd1 = ..
JavaPairRDD<JsonObject, String> rdd2 = .. 
JavaPairRDD<JsonObject, Tuple2<Iterable<String>, Iterable<JsonObject>>> 
groupedRDD = rdd1.groupWith(rdd2);
javapairdd rdd1=。。
JavaPairRDD rdd2=。。
爪哇派
groupedRDD=rdd1.groupWith(rdd2);
但我不确定Spark将如何比较两个JsonObject键


更一般地说,在执行join或groupWith时如何比较键?

它使用Java
.equals()
方法

问题是
equals()
没有在
JsonObject
中实现。因此,它将使用默认的Java实现,只比较对象引用

类对象的equals方法实现了对象上最有区别的等价关系;也就是说,对于任何非空引用值x和y,当且仅当x和y引用同一对象(x==y的值为true)时,此方法才返回true


我使用com.google.gson.JsonObject作为我的JsonObject类,它实现了equals。所以我相信我的代码应该可以正常工作。不幸的是com.google.gson.JsonObject是不可序列化的,所以它只有在数据没有通过网络传输的情况下才能工作。我已经解决了这个问题,不再使用JSON作为密钥。它充满了问题,我不建议这样做。