我正在学习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)