2

オブジェクトファイルから次の構造を読み取っています。

(String, CompactBuffer(person1, person2, person3 ...) )

私がこのように読もうとした場合:

val input = sc.objectFile[(String, ListBuffer[Person])]("inputFile.txt")

val myData = input.map { t =>
  val myList = t._2
  for (p <- myList) {
    println(p.toString())
  }
  t
}

次のエラーが発生しました。

java.lang.ClassCastException: org.apache.spark.util.collection.CompactBuffer cannot be cast to scala.collection.mutable.ListBuffer

ただし、objectFile を読み取るときに CompactBuffer を使用することはできません。

val input = sc.objectFile[(String, CompactBuffer[Person])]("inputFile.txt")

Eclipse は次のように教えてくれます。

class CompactBuffer in package collection cannot be accessed in package 
 org.apache.spark.util.collection

では、objectFile からそのような CompactBuffer を読み取るにはどうすればよいでしょうか。ありがとうございました!

4

1 に答える 1

2

https://github.com/apache/spark/blob/master/core/src/main/scala/org/apache/spark/util/collection/CompactBuffer.scalaを見ると、これCompactBufferが Seq のサブクラスであることがわかります、だから試してみてくださいval input = sc.objectFile[(String, Seq[Person])]("inputFile.txt")

于 2015-08-22T21:57:13.940 に答える