3
私はSpark + Scalaを学習していますが、この問題が残っています。私には2つのことがあります。Scala spark rddファイルのペアで一致するようにする
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 ")
そして、私は(私は、例えば2最初の行をお見せし)頻繁に言葉の「組み合わせ」変数表すペアを持っている:多くの単語が含まれている1つのファイルが(私は、例えば2つの最初の行をお見せし):
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)
私は「組み合わせ」変数
でそれらを一致させることができるように助けてください!これは私を夢中にさせている。ありがとう、
ハローmaasgを、あなたのコードが良いように見えるが、私は持っている: – Bebec
スカーラ> textCombinations.take(10).foreach (println) 16/12/17 11:45:42エラーexecutor.Executor:ステージ5.0のタスク0.0(TID 5)の例外 java.io.NotSerializableException:scala.collection.SeqLike $ CombinationsItr シリアライゼーションスタック:.. 。 – Bebec
@Bebecわかりました。それを '.toSeq'の代わりに' .combinations(2).toList'にしてください。 'toSeq'実装のデフォルトは' 'Stream''です。これは直列化できません。私も答えを更新しました。 – maasg