Apache Spark:使用自定义 criteria/fuzzy 匹配加入 RDD(数据集)

Apache Spark: JOINing RDDs (data sets) using custom criteria/fuzzy matching

是否可以使用一些 "custom criteria"/模糊匹配来连接两个 (Pair)RDD(或 Datasets/DataFrames)(在多个字段上),例如range/interval 用于数字或日期以及各种 "distance methods",例如Levenshtein,用于字符串?

对于 RDD 中的 "grouping" 来获得 PairRDD,可以实现 PairFunction,但是当 JOINing 两个 RDDs/data套?我在想:

rdd1.join(rdd2, myCustomJoinFunction);

我正在考虑在 hashCode()equals() 中实现自定义逻辑,但我不确定如何使 "similar" 数据在同一个存储桶中结束。我也一直在研究 RDD.cogroup() 但还没有想出如何使用它来实现它。

我刚遇到 elasticsearc-hadoop。有谁知道那个库是否可以用来做这样的事情?

我正在使用 Apache Spark 2.0.0。我正在 Java 中实施,但 Scala 中的答案也会非常有帮助。

PS。这是我的第一个 Whosebug 问题,所以如果我犯了一些新手错误,请多多包涵 :).

对于 DataFrames/Datasets,您可以使用具有自定义连接功能的连接。创建一个将使用 DataFrame 中的列的 UDF,就像这个问题 .

你也可以

rdd1.cartesian(rdd2).filter (...)

记住计算会消耗很多时间