2

是否可以使用一些“自定义标准”/模糊匹配(例如数字或日期的范围/间隔以及字符串的各种“距离方法”(例如 Levenshtein)来连接两个(Pair)RDDs(或Datasets/ s)(在多个字段上)?DataFrame

对于在 an 中“分组”RDD以获得 a PairRDD,可以实现 a PairFunction,但是在 JOINing 两个RDDs/数据集时似乎不可能进行类似的操作?我在想类似的事情:

rdd1.join(rdd2, myCustomJoinFunction);

我正在考虑在其中实现自定义逻辑hashCode()equals()但我不确定如何使“相似”数据在同一个存储桶中结束。我也一直在研究,RDD.cogroup()但还没有弄清楚如何使用它来实现这一点。

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

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

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

4

1 回答 1

0

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

你也可以做

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

请记住,它会花费大量时间来计算

于 2016-09-02T19:24:21.770 回答