无法在Scala for Array中编写SequenceFile [NullWritable,ByteWritable]

时间:2018-03-10 22:06:24

标签: scala hadoop apache-spark

我在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

1 个答案:

答案 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