/ / ScalaはRDDにシーケンスファイルとして保存できません。ドキュメントに記載のとおり、scala、rdd、sequencefileです。

ScalaはRDDにシーケンスファイルとして保存することはできませんが、ドキュメントごとに許可されます - scala、rdd、sequencefile

私は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は0

saveAsSequenceFileは、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があるためです。