<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>question Re: Hadoop sequence file EOFException in Archives of Support Questions (Read Only)</title>
    <link>https://community.cloudera.com/t5/Archives-of-Support-Questions/Hadoop-sequence-file-EOFException/m-p/46576#M44142</link>
    <description>&lt;P&gt;I founded the error. The HVPI custom type was wrong. I just put&amp;nbsp;out.write(byteOutputStream.toByteArray()); on write method and now it's work.&lt;/P&gt;</description>
    <pubDate>Sun, 23 Oct 2016 04:00:17 GMT</pubDate>
    <dc:creator>idobrt</dc:creator>
    <dc:date>2016-10-23T04:00:17Z</dc:date>
    <item>
      <title>Hadoop sequence file EOFException</title>
      <link>https://community.cloudera.com/t5/Archives-of-Support-Questions/Hadoop-sequence-file-EOFException/m-p/46543#M44140</link>
      <description>&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Hello. I tryed to process image on hadoop and i using HVPI (&lt;A href="https://github.com/xmpy/hvpi" target="_blank"&gt;https://github.com/xmpy/hvpi&lt;/A&gt;). It's open source. I using it to extract the frames from video but it not provide a output format to save the frames on HDFS. So i tryed to use the SequencefileOutputFormat to save the frames on HDFS. I readed a book and make some changes to the code work on hadoop 2.7.1. Apparently it's worked but when i tryed to recover the file in another mapreduce job i got EOFException. I thinked there is 3 possibily:&lt;/P&gt;&lt;P&gt;1- My SequenceFileOutputFormat is wrong and save a corrupted file;&lt;/P&gt;&lt;P&gt;2-My SequenceInputFormt is wrong;&lt;/P&gt;&lt;P&gt;3- The HVPI custom type is wrong.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV&gt;&lt;DIV&gt;The code to save a&amp;nbsp;&amp;nbsp;Sequence file:&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;DIV&gt;public static void main(String[] args) throws Exception {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;//判断输入参数&lt;/DIV&gt;&lt;DIV&gt;if (args.length != 2) { &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp;System.err.println("Usage: &amp;lt;input path&amp;gt; &amp;lt;output path&amp;gt;"); &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp;System.exit(-1); &amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;} &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;DIV&gt;Configuration conf = new Configuration();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;//设置Master URL&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;conf.set("fs.defaultFS","hdfs://evoido:9000");&lt;/DIV&gt;&lt;DIV&gt;Job job = new Job(conf, "MRVideoReader");&lt;/DIV&gt;&lt;DIV&gt;job.setJarByClass(MRVideoReader.class);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Path in = new Path(args[0]);&lt;/DIV&gt;&lt;DIV&gt;Path out = new Path(args[1]);&lt;/DIV&gt;&lt;DIV&gt;//reduce task zero job is only map&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;job.setJobName("Sequence Writer Test");&lt;/DIV&gt;&lt;DIV&gt;job.setNumReduceTasks(0);&lt;/DIV&gt;&lt;DIV&gt;job.setInputFormatClass(VideoInputFormat.class);&lt;/DIV&gt;&lt;DIV&gt;job.setMapperClass(MRVideoReaderMapper.class);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;job.setMapOutputKeyClass(Text.class);&lt;/DIV&gt;&lt;DIV&gt;//job.setMapOutputValueClass(Text.class);&lt;/DIV&gt;&lt;DIV&gt;job.setMapOutputValueClass(ImageWritable.class);&lt;/DIV&gt;&lt;DIV&gt;job.setReducerClass(MRVideoReaderReducer.class);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;job.setOutputFormatClass(SequenceFileOutputFormat.class);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;job.setJarByClass(MRVideoReader.class);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;job.setOutputKeyClass(Text.class);&lt;/DIV&gt;&lt;DIV&gt;job.setOutputValueClass(ImageWritable.class);&lt;/DIV&gt;&lt;DIV&gt;//job.setOutputValueClass(Text.class);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;FileInputFormat.addInputPath(job,in);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;SequenceFileOutputFormat.setOutputPath(job, out);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;System.exit(job.waitForCompletion(true)?0:1);&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;The code to read from HDFS:&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;DIV&gt;public static void main(String[] args) throws Exception {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;//判断输入参数&lt;/DIV&gt;&lt;DIV&gt;if (args.length != 2) { &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp;System.err.println("Usage: &amp;lt;input path&amp;gt; &amp;lt;output path&amp;gt;"); &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp;System.exit(-1); &amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;} &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;DIV&gt;Configuration conf = new Configuration();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;//设置Master URL&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;conf.set("fs.defaultFS","hdfs://evoido:9000");&lt;/DIV&gt;&lt;DIV&gt;Job job = new Job(conf, "MRVideoReader");&lt;/DIV&gt;&lt;DIV&gt;job.setJarByClass(MRVideoReader.class);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Path in = new Path(args[0]);&lt;/DIV&gt;&lt;DIV&gt;Path out = new Path(args[1]);&lt;/DIV&gt;&lt;DIV&gt;//reduce task zero job is only map&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;job.setJobName("Sequence Writer Test");&lt;/DIV&gt;&lt;DIV&gt;job.setNumReduceTasks(0);&lt;/DIV&gt;&lt;DIV&gt;&lt;STRONG&gt;&lt;FONT color="#ff0000"&gt;job.setInputFormatClass(SequenceFileInputFormat.class);&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;job.setMapperClass(MRVideoReaderMapper.class);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;job.setMapOutputKeyClass(Text.class);&lt;/DIV&gt;&lt;DIV&gt;//job.setMapOutputValueClass(Text.class);&lt;/DIV&gt;&lt;DIV&gt;job.setMapOutputValueClass(ImageWritable.class);&lt;/DIV&gt;&lt;DIV&gt;job.setReducerClass(MRVideoReaderReducer.class);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;job.setOutputFormatClass(TextOutputFormat.class);&lt;/DIV&gt;&lt;DIV&gt;job.setJarByClass(MRVideoReader.class);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;job.setOutputKeyClass(Text.class);&lt;/DIV&gt;&lt;DIV&gt;job.setOutputValueClass(ImageWritable.class);&lt;/DIV&gt;&lt;DIV&gt;//job.setOutputValueClass(Text.class);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT color="#ff0000"&gt;&lt;STRONG&gt;SequenceFileInputFormat.addInputPath(job, in);&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;FileOutputFormat.setOutputPath(job, out);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;System.exit(job.waitForCompletion(true)?0:1);&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;This is the code's piece from the custom type.&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Maybe the readFilds or write methods are incorrect.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;DIV&gt;public void readFields(DataInput in) throws IOException {&lt;/DIV&gt;&lt;DIV&gt;int len = WritableUtils.readVInt(in);&lt;/DIV&gt;&lt;DIV&gt;System.out.println("Valor de len:"+len);&lt;/DIV&gt;&lt;DIV&gt;byte[] temp = new byte[len];&lt;/DIV&gt;&lt;DIV&gt;in.readFully(temp, 0, len);&lt;/DIV&gt;&lt;DIV&gt;ByteArrayInputStream byteStream = new ByteArrayInputStream(temp); // 输入流；&lt;/DIV&gt;&lt;DIV&gt;bufferedImage = ImageIO.read(byteStream); // 从输入流中，读取图片存入image中，而这里in可以为ByteArrayInputStream();&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;DIV&gt;public void write(DataOutput out) throws IOException {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;ByteArrayOutputStream byteOutputStream = new ByteArrayOutputStream();&lt;/DIV&gt;&lt;DIV&gt;ImageIO.write( bufferedImage, "png", byteOutputStream );&lt;/DIV&gt;&lt;DIV&gt;WritableUtils.writeVInt(out, byteOutputStream.size());&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 16 Sep 2022 10:45:08 GMT</pubDate>
      <guid>https://community.cloudera.com/t5/Archives-of-Support-Questions/Hadoop-sequence-file-EOFException/m-p/46543#M44140</guid>
      <dc:creator>idobrt</dc:creator>
      <dc:date>2022-09-16T10:45:08Z</dc:date>
    </item>
    <item>
      <title>Re: Hadoop sequence file EOFException</title>
      <link>https://community.cloudera.com/t5/Archives-of-Support-Questions/Hadoop-sequence-file-EOFException/m-p/46575#M44141</link>
      <description>&lt;P&gt;I founded the error. The HVPI custom type was wrong. It was in the write method.&lt;/P&gt;</description>
      <pubDate>Sun, 23 Oct 2016 03:40:22 GMT</pubDate>
      <guid>https://community.cloudera.com/t5/Archives-of-Support-Questions/Hadoop-sequence-file-EOFException/m-p/46575#M44141</guid>
      <dc:creator>idobrt</dc:creator>
      <dc:date>2016-10-23T03:40:22Z</dc:date>
    </item>
    <item>
      <title>Re: Hadoop sequence file EOFException</title>
      <link>https://community.cloudera.com/t5/Archives-of-Support-Questions/Hadoop-sequence-file-EOFException/m-p/46576#M44142</link>
      <description>&lt;P&gt;I founded the error. The HVPI custom type was wrong. I just put&amp;nbsp;out.write(byteOutputStream.toByteArray()); on write method and now it's work.&lt;/P&gt;</description>
      <pubDate>Sun, 23 Oct 2016 04:00:17 GMT</pubDate>
      <guid>https://community.cloudera.com/t5/Archives-of-Support-Questions/Hadoop-sequence-file-EOFException/m-p/46576#M44142</guid>
      <dc:creator>idobrt</dc:creator>
      <dc:date>2016-10-23T04:00:17Z</dc:date>
    </item>
  </channel>
</rss>

