Scala 无法在 RDD 中保存为序列文件,根据允许的文档
Scala not able to save as sequence file in RDD, as per doc it is allowed
我正在使用 Spark 1.6,根据 official doc 允许将 RDD 保存为序列文件格式,但是我注意到我的 RDD 文本文件:
scala> textFile.saveAsSequenceFile("products_sequence")
<console>:30: error: value saveAsSequenceFile is not a member of org.apache.spark.rdd.RDD[String]
我用谷歌搜索发现类似的讨论似乎表明这在 pyspark 中有效。我对官方文档的理解有误吗? saveAsSequenceFile()
可以在 Scala 中使用吗?
只有在 RDD 中有键值对时,saveAsSequenceFile 才可用。这样做的原因是它定义在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,它是一个键值对,而不仅仅是一个 RDD[String].
我正在使用 Spark 1.6,根据 official doc 允许将 RDD 保存为序列文件格式,但是我注意到我的 RDD 文本文件:
scala> textFile.saveAsSequenceFile("products_sequence")
<console>:30: error: value saveAsSequenceFile is not a member of org.apache.spark.rdd.RDD[String]
我用谷歌搜索发现类似的讨论似乎表明这在 pyspark 中有效。我对官方文档的理解有误吗? saveAsSequenceFile()
可以在 Scala 中使用吗?
只有在 RDD 中有键值对时,saveAsSequenceFile 才可用。这样做的原因是它定义在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,它是一个键值对,而不仅仅是一个 RDD[String].