我在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
答案 0 :(得分:2)
方法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