2016-07-05 6 views
2

私はScala Sparkを初めて使いました。スカラスパークはサブストリングのインデックスでRDDをソートします

私は1億2,000万の文字列を含むRDDを持っています。サブ文字列を含むすべての文字列を検索しようとしています。私はうまくやっています。

ここでは、インデックスによって出力を並べ替えるので、部分文字列が開始に近い文字列が最初に検索されるようにします。

サブストリング:ストリング

ABCDEFG:

S1 = tryu YUI

S2 = TR ABCDEFG YUI

ABCDEFG例えば

S3 = ABCDEFG yuo

だから私の所望の出力がソートされ、リストの\ RDDする必要があります{S3、S2、S1}

そうすることの最善の方法は何ですか?

答えて

3

RDD[String]RDD[(String,Index)]に変換することです。インデックスはJavaの文字列indexOfを使用して計算されます。

// Dataset 
val r = sc.makeRDD(Seq("abf", "ffff", "aaaaaabf", "ttggabf")) 

// Sorting on index of substring "bf", only for those strings that contain "bf" 
val sorted = r.map(s => (s, s.indexOf("bf"))).filter(_._2>0).sortBy(_._2) 
関連する問題