无法在scala中为数组[nullwritable,bytewritable]写入sequencefile

wpcxdonn  于 2021-06-01  发布在  Hadoop
关注(0)|答案(1)|浏览(367)

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

2ekbmq321#

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

相关问题