我在Scala中有一个字节数组:val nums = Array[Byte](1,2,3,4,5,6,7,8,9),也可以采用其他任何字节数组。

我想将其另存为HDFS中的序列文件。下面是我在Scala控制台中编写的代码。

import org.apache.hadoop.io.compress.GzipCodec
nums.map( x => (NullWritable.get(), new ByteWritable(x)))).saveAsSequenceFile("/yourPath", classOf[GzipCodec])

但是,它给出了以下错误:
error: values saveAsSequenceFile is not a member of Array[ (org.apache.hadoop.io.NullWritable), (org.apache.hadoop.io.ByteWritable)]

您还需要导入这些类(在scala控制台中)。
import org.apache.hadoop.io.NullWritable
import org.apache.hadoop.io.ByteWritable

最佳答案

方法saveAsSequenceFile在RDD而不是数组上可用。因此,首先需要将数组提升为RDD,然后才能调用方法saveAsSequenceFile

val v = sc.parallelize(Array(("owl",3), ("gnu",4), ("dog",1), ("cat",2), ("ant",5)), 2)
v.saveAsSequenceFile("hd_seq_file")

http://homepage.cs.latrobe.edu.au/zhe/ZhenHeSparkRDDAPIExamples.html

08-16 06:40