Можно ли соединить два (Pair)RDD
с (или Dataset
S/DataFrame
S) (по нескольким полям), используя некоторые «пользовательские критерии»/нечеткого соответствия, например, диапазон/интервал для чисел или дат и различные «дистанционные методы», например. Левенштейн, для струн?Apache Спарк: Крепежный РДУ (наборы данных) с использованием пользовательских критериев/нечеткое соответствие
Для «группировки» в пределах RDD
чтобы получить PairRDD
, можно реализовать PairFunction
, но мне кажется, что-то подобное не представляется возможным, когда объединяющем два RDD
S/наборы данных? Я имею в виду что-то вроде:
rdd1.join(rdd2, myCustomJoinFunction);
Я думал о реализации пользовательской логики в hashCode()
и equals()
, но я не уверен, как сделать «аналогичные» данные ветра в том же ведре. Я также изучал RDD.cogroup()
, но не понял, как я мог бы использовать его для реализации этого.
Я только что наткнулся на elasticsearc-hadoop. Кто-нибудь знает, можно ли использовать эту библиотеку, чтобы сделать что-то вроде этого?
Я использую Apache Spark 2.0.0. Я реализую Java, но ответ в Scala также будет очень полезен.
PS. Это мой первый вопрос о Stackoverflow, так что несите меня, если я совершил ошибку новичков :).
Я видел [Альтернативы RDD.cartesian для нечеткого присоединиться к ApacheSpark] (http://stackoverflow.com/questions/33376727/alternatives-to-rdd-cartesian-for-fuzzy-join-in-apachespark), но оба моих RDD/набора данных будут слишком большими для 'collect()' в памяти. –