SplitFile给出强制转换错误



我在hdfs上放置了一个mp4文件,并试图直接分析它,我有一个类名VideoRecordReader,其中给出了强制转换错误。以下是"错误"的描述。

您已经加载了库/usr/local/lib/libopencv_core.so.3.0.0可能已禁用堆栈保护。虚拟机将尝试修复堆栈现在守卫。尝试_201607261400_0011_m_0000000_1:高度建议您使用"execstack-c"修复库,或者将其与"-z noexecstack"链接。26年7月16日17:32:27信息映射。JobClient:任务Id:attempt_201607261400_0011_m_0000000_2,状态:失败java.lang.ClassCastException:org.apache.hadoop.mapreduce.lib.input.FileSplit无法强制转换为org.apache.hadop.mapred.FileSplitcom.finalyearproject.VideoRecordReader.initialize(VideoRecordReader.java:65)在org.apache.hadop.mapred.MapTask$NewTrackingRecordReader.initialize(MapTask.java:521)网址:org.apache.hadop.mapred.MapTask.runNewMapper(MapTask.java:763)在org.apache.hadop.mapred.MapTask.run(MapTask.java:364)org.apache.hadop.mapred.Child$4.run(Child.java:255)位于的java.security.AccessController.doPrivileged(本机方法)javax.security.auth.Subject.doAs(Subject.java:422)org.apache.hoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1190)网址:org.apache.hadop.mapred.Child.main(Child.java:249)

这是SplitFile的代码。

public void initialize(InputSplit genericSplit, TaskAttemptContext context)
            throws IOException, InterruptedException {
        FileSplit split = (FileSplit) genericSplit;
        Configuration job = context.getConfiguration();
        start = 0;
        end = 1; 
        final Path file = split.getPath();
        FileSystem fs = file.getFileSystem(job);
        fileIn = fs.open(split.getPath());
        filename = split.getPath().getName();
        byte [] b = new byte[fileIn.available()];
        fileIn.readFully(b);
        video = new VideoObject(b);
    }

请帮我谢谢你的问候。

很可能是将mapredmapreduce API混合在一起。

它抱怨你试图将org.apache.hadoop.mapreduce.lib.input.FileSplit转换为org.apache.hadoop.mapred.FileSplit

您需要确保通常不会在两个API之间混合导入。

因此,请检查org.apache.hadoop.mapred.FileSplit是否已导入,并将其更改为org.apache.hadoop.mapreduce.lib.input.FileSplit

相关内容

  • 没有找到相关文章

最新更新