Scala Spark 按子字符串的索引对 RDD 进行排序

kevingrace 阅读:149 2025-06-02 22:19:02 评论:0

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

我有包含 1.2 亿个字符串的 RDD,我试图找到包含子字符串的所有字符串。我做得很好。

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

例如:

子串:abcdefg

字符串:

s1 = tryuabcdefgyui

s2 = trabcdefgyui

s3 = abcdefg

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

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

请您参考如下方法:

想法是将 RDD[String] 转换为 RDD[(String,Index)] ,其中 Index 是使用 Java 的 String 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) 


标签:Spark
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号