Scala Spark按子串索引排序RDD

时间:2016-07-05 17:43:51

标签: scala apache-spark

我是Scala Spark的新手,我有一个问题。

我的RDD包含1.2亿个字符串,我试图找到包含子字符串的所有字符串。我没事。

现在我想按索引对输出进行排序,以便找到子字符串更接近start的字符串。

例如:

子字符串: abcdefg

字符串:

s1 = tryu abcdefg yui

s2 = tr abcdefg yui

s3 = abcdefg yuo

所以我想要的输出应该是一个排序的列表\ rdd {s3,s2,s1}

这样做的最佳方式是什么?

1 个答案:

答案 0 :(得分:4)

我们的想法是将RDD[String]转换为使用Java的字符串RDD[(String,Index)]计算索引的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)