[英]Apache Spark: JOINing RDDs (data sets) using custom criteria/fuzzy matching
是否可以使用一些“自定义条件” /模糊匹配(例如,数字或日期的范围/间隔以及各种“距离方法”),将两个(Pair)RDD
(或Dataset
/ DataFrame
)(在多个字段上)连接DataFrame
Levenshtein,用于琴弦吗?
为了在RDD
进行“分组”以获取PairRDD
,可以实现PairFunction
,但是在联接两个RDD
或数据集时似乎无法实现类似的功能吗? 我在想类似的东西:
rdd1.join(rdd2, myCustomJoinFunction);
我当时正在考虑在hashCode()
和equals()
实现自定义逻辑,但是我不确定如何在同一个存储桶中存储“相似”数据。 我也一直在研究RDD.cogroup()
但没有弄清楚如何使用它来实现这一点。
我刚遇到了Elasticsearc-hadoop 。 有谁知道该库是否可以用来做这样的事情?
我正在使用Apache Spark 2.0.0。 我正在用Java实现,但在Scala中回答也将非常有帮助。
PS。 这是我的第一个Stackoverflow问题,所以如果我犯了一些新手错误,请多多包涵:)。
对于DataFrames / Dataset,您可以将join与自定义联接功能一起使用。 创建一个将使用DataFrame中的列的UDF,就像该问题在第一个答案中一样 。
你也可以
rdd1.cartesian(rdd2).filter (...)
请记住,它将花费大量时间进行计算
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.