Ich möchte die Methodenkombinationen kennen.Wie verwendet man Kombinationen in Spark?
Eigentlich habe ich
Input:
sQmqgE sQmqgE sQmqgE sQmqgE JKOPDB JKOPDB JKOPDB YGJs YGJs YGJs ERLnA ERLnA ERLnA ERLnA ERLnA XPfQ hntJdN hntJdN hntJdN hntJdN hntJdN BPAdv BPAdv BPAdv BPAdv lTOF lTOF SPrVV SPrVV aavqj
Mein Code:
test.flatMap{line => line.split(" ")}
.flatMap{word => word.combinations(2)}
.map{paire=>(paire.mkString(","),1)}
.reduceByKey(_ + _)
Ausgang:
(c,k,1981)
(e,e,1998)
(U,A,1970)
(h,f,1947)
(Y,Q,2133)
(o,s,2077)
(F,F,1965)
Aber ich will die Kombinationen Wörter pro Worte und nicht Brief pro Brief .
-------------- --------- EDIT
Hier können wir sehen, dass meine Minderer gibt immer 1. Zum Beispiel die Paare (abc , mno) nicht 1
val myRDD = sc.parallelize(Seq("abc def ghi mno mno", "jkl mno pqr abc abc"))
myRDD: org.apache.spark.rdd.RDD[String] = ParallelCollectionRDD[7] at parallelize at <console>:27
scala> myRDD.foreach{println}
abc def ghi mno mno
jkl mno pqr abc abc
scala> myRDD.map(_.split(" ")).flatMap(_.combinations(2)).
| map(p=>(p.mkString(","),1)).
| reduceByKey(_+_).
| foreach{println}
(jkl,abc,1)
(def,ghi,1)
(jkl,mno,1)
(abc,ghi,1)
(ghi,mno,1)
(mno,pqr,1)
(def,mno,1)
(abc,def,1)
(pqr,abc,1)
(abc,abc,1)
(abc,mno,1)
(mno,abc,1)
(jkl,pqr,1)
(mno,mno,1)
Dank Rückkehr für
Ist alle Ihre Daten auf einer einzelnen Zeile? Möchten Sie die Kombinationen innerhalb jeder Linie oder über Linien? –
Nein, ich habe ungefähr 20 Wörter pro Zeile. Ich möchte die Kombinationen innerhalb jeder Zeile und mein Reducer wird die Kombinationen über die gesamte Datei plotten. – user7375007
Perfekt, siehe meine Antwort unter –