0

ことが可能にいくつかの「カスタム条件」を使用して(複数のフィールド上の)2つの(Pair)RDD S(またはDataset S/DataFrame秒)に参加することです/ファジー・マッチングを一致/ファジーカスタム条件を使用して、例えば数字または日付のための範囲/間隔、および様々な「距離法」。 Levenshtein、ストリングス? PairRDDを取得するRDD内の「グループ化」のためにApacheのスパーク:参加RDDS(データセット)

、一つはPairFunctionを実装することができますが、2つのRDD S /データセットを結合する場合と同様の何かができないようですか?

rdd1.join(rdd2, myCustomJoinFunction); 

私はhashCode()equals()でカスタム・ロジックを実装することを考えましたが、私は「類似」のデータは同じバケツに巻くようにする方法を確認していない:私のようなものを考えています。私もRDD.cogroup()を調べていますが、これを実装するためにどのように使用できるかはわかりません。

私はちょうどelasticsearc-hadoopに遭遇しました。そのライブラリがこのようなことをするために使用できるのか誰にも知られていますか?

私はApache Spark 2.0.0を使用しています。私はJavaで実装していますが、Scalaの答えも非常に役に立ちます。

PS。これは私の最初のStackoverflowの質問ですので、私はいくつかの初心者のミスをした場合:)。

+0

[ファジーのためのRDD.cartesianへの代替がApacheSparkに参加]を算出するために多くの時間(http://stackoverflow.comを消費することを覚えておいてください行うことができます/ question/33376727/alternative-to-rdd-cartesian-for-fuzzy-join-in-apachespark)しかし、私のRDD /データセットは大きすぎてメモリ内で 'collect()'することができません。 –

答えて

0

DataFrames/Datasetの場合、カスタム結合機能を使用して結合を使用できます。この質問in first answerのように、DataFrameの列を使用するUDFを作成します。

また

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

が、それは私が見てきた

+0

ありがとう!私のプロトタイプでは、[非等価キーとのカスタム結合](http://stackoverflow.com/questions/30132533/custom-join-with-non-equal-keys)の最初の答えを使用しています。 –

関連する問題