Scala Spark RDD组合中的文件匹配对



我正在学习Spark Scala,并且我遇到了这个问题。我有两件事。一个包含许多单词的文件(例如,我向您展示了2行):

scala> val text = sc.textFile("hdfs://master:9000/data/words.txt")
text: org.apache.spark.rdd.RDD[String] = hdfs://master:9000/data/words.txt MapPartitionsRDD[1] at textFile at <console>:24
scala> text.take(2)
res0: Array[String] = Array("a b c d ", "e r t y u i o p ")
scala> val combinations = l.cartesian(l).filter{case(x,y) => x < y}
combinations: org.apache.spark.rdd.RDD[(String, String)] = MapPartitionsRDD[9] at filter at <console>:32
scala> combinations.take(2)
res1: Array[(String, String)] = Array((a,b), (a,c))

我想从"文本"变量的每一行创建组合对,以便与"组合"变量对匹配。

例如,使用输入文本的第一行,我想拥有:

(a,b) (a,c) (a,d) (b,c) (b,d) (c,d)

以便我可以将它们与"组合"变量匹配

请帮忙!这真让我抓狂。谢谢,

如果我正确理解,我们想获得text每个条目中包含的字母的组合。例如:

"a b c d " => (a,b) (a,c) (a,d) (b,c) (b,d) (c,d)

我们可以使用Scala Collections API进行此操作:

val textCombinations = text.map(t => t.split(" ").combinations(2).toList)

最新更新