Apache Spark:使用自定义 criteria/fuzzy 匹配加入 RDD(数据集)
Apache Spark: JOINing RDDs (data sets) using custom criteria/fuzzy matching
是否可以使用一些 "custom criteria"/模糊匹配来连接两个 (Pair)RDD
(或 Dataset
s/DataFrame
s)(在多个字段上),例如range/interval 用于数字或日期以及各种 "distance methods",例如Levenshtein,用于字符串?
对于 RDD
中的 "grouping" 来获得 PairRDD
,可以实现 PairFunction
,但是当 JOINing 两个 RDD
s/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 (...)
记住计算会消耗很多时间
是否可以使用一些 "custom criteria"/模糊匹配来连接两个 (Pair)RDD
(或 Dataset
s/DataFrame
s)(在多个字段上),例如range/interval 用于数字或日期以及各种 "distance methods",例如Levenshtein,用于字符串?
对于 RDD
中的 "grouping" 来获得 PairRDD
,可以实现 PairFunction
,但是当 JOINing 两个 RDD
s/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 (...)
记住计算会消耗很多时间