大家好我想寫一個使用序列文件輸入和輸出文件的hadoop程序。我tryed建立job.setOutputFormatClass(SequenceFileOutputFormat.class)
但它造成EOFException
:如何使用sequenceInput和輸出文件編寫hadoop程序?
我以前HVPI
https://github.com/xmpy/hvpi與xuggler
打破視頻爲幀。我希望將幀保存在序列文件中,並將其保存在HDFS
中以用於其他地圖縮減任務。
另一種方法是編寫一個hadoop自定義輸出文件,但我不知道它是如何做到的。
我遵循這個教程http://hadooptutorial.info/hadoop-sequence-files-example/但我上
public void readFields(DataInput in) throws IOException {
int len = WritableUtils.readVInt(in);
byte[] temp = new byte[len];
in.readFully(temp, 0, len);
ByteArrayInputStream byteStream =
new ByteArrayInputStream(temp);
bufferedImage = ImageIO.read(byteStream);
}
16/09/17 17:05:55 INFO mapred.LocalJobRunner: reduce task executor complete.
16/09/17 17:05:55 WARN mapred.LocalJobRunner: job_local72686463_0001
java.lang.Exception: java.io.EOFException
at org.apache.hadoop.mapred.LocalJobRunner$Job.runTasks(LocalJobRunner.java:462)
at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:529)
Caused by: java.io.EOFException
at java.io.DataInputStream.readFully(DataInputStream.java:197)
at edu.bupt.videodatacenter.input.ImageWritable.readFields(ImageWritable.java:67)
...
更具體地在管線in.readFully(溫度,0,LEN)得到EOFException
。這是來自ImageWritable類。它來自HVPI。我沒有做任何改變。我只是用這個。
可能是readFields實現中的自定義可寫類型有問題。這只是當我使用SequenceFileInputFormat.addInputhPath(job,in)時發生的。 –