私はSpark 1.6を使っています。 公式文書 RDDをシーケンスファイル形式に保存することは許可されていますが、私のRDD textFileに気付くでしょう。
scala> textFile.saveAsSequenceFile("products_sequence")
<console>:30: error: value saveAsSequenceFile is not a member of org.apache.spark.rdd.RDD[String]
私はグーグルして、同様の議論がpysparkでこの作品を示唆しているように思えるのを見つけました。公式文書に対する私の理解は間違っていますか?できる saveAsSequenceFile()
Scalaで使えるの?
回答:
回答№1は0saveAsSequenceFileは、RDDにキーと値のペアがある場合にのみ使用できます。これは、PairRDDFunctionsで定義されているからです。
https://spark.apache.org/docs/2.1.1/api/scala/index.html#org.apache.spark.rdd.PairRDDFunctions
API定義がKとVを取ることがわかります。
上記のコードをに変更した場合
import org.apache.spark.SparkContext
import org.apache.spark.SparkConf
import org.apache.spark.rdd._
object SequeneFile extends App {
val conf = new SparkConf().setAppName("sequenceFile").setMaster("local[1]")
val sc = new SparkContext(conf)
val rdd : RDD[(String, String)] = sc.parallelize(List(("foo", "foo1"), ("bar", "bar1"), ("baz", "baz1")))
rdd.saveAsSequenceFile("foo.seq")
sc.stop()
}
これは完全に動作し、あなたはfoo.seqファイルを入手するでしょう。上記が機能する理由は、RDD [String]ではなく、キーと値のペアであるRDDがあるためです。