Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SequenceFile到.txt的转换_Java_Hadoop - Fatal编程技术网

Java SequenceFile到.txt的转换

Java SequenceFile到.txt的转换,java,hadoop,Java,Hadoop,有没有办法将序列文件转换成.txt文件?sequencefile是在hadoop作业之后生成的,当我尝试使用SequenceFileReader读取sequencefile时,该作业会给我一个EOFEException,尽管该作业成功完成。因此,我认为我可以将序列文件复制到本地系统,然后在可能的情况下转换为txt格式。将文件从seq更改为text不是一个合适的解决方案。.尝试查看问题。.您可以尝试类似的方法来读取键/值对- public class SequenceFileReader {

有没有办法将序列文件转换成.txt文件?sequencefile是在hadoop作业之后生成的,当我尝试使用SequenceFileReader读取sequencefile时,该作业会给我一个EOFEException,尽管该作业成功完成。因此,我认为我可以将序列文件复制到本地系统,然后在可能的情况下转换为txt格式。

将文件从seq更改为text不是一个合适的解决方案。.尝试查看问题。.您可以尝试类似的方法来读取键/值对-

public class SequenceFileReader {
    public static void main(String args[]) throws Exception {
        System.out.println("Readeing Sequence File");
        Configuration conf = new Configuration();
        conf.addResource(new Path("/home/mohammad/hadoop-0.20.203.0/conf/core-site.xml"));
        conf.addResource(new Path("/home/mohammad/hadoop-0.20.203.0/conf/hdfs-site.xml"));  
        FileSystem fs = FileSystem.get(conf);
        Path path = new Path("/seq/file");
        SequenceFile.Reader reader = null;      
        try {
            reader = new SequenceFile.Reader(fs, path, conf);
            Writable key = (Writable) ReflectionUtils.newInstance(reader.getKeyClass(), conf);
            Writable value = (Writable) ReflectionUtils.newInstance(reader.getValueClass(), conf);
            while (reader.next(key, value)) {
                System.out.println(key + "  <===>  " + value.toString());
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            IOUtils.closeStream(reader);
        }
    }
}
公共类SequenceFileReader{
公共静态void main(字符串args[])引发异常{
System.out.println(“读取序列文件”);
Configuration conf=新配置();
conf.addResource(新路径(“/home/mohammad/hadoop-0.20.203.0/conf/core-site.xml”);
conf.addResource(新路径(“/home/mohammad/hadoop-0.20.203.0/conf/hdfs site.xml”);
FileSystem fs=FileSystem.get(conf);
路径路径=新路径(“/seq/file”);
SequenceFile.Reader=null;
试一试{
reader=newsequencefile.reader(fs,path,conf);
可写键=(可写)ReflectionUtils.newInstance(reader.getKeyClass(),conf);
可写值=(可写)ReflectionUtils.newInstance(reader.getValueClass(),conf);
while(reader.next(键、值)){
System.out.println(key+“”+value.toString());
}
}捕获(例外e){
e、 printStackTrace();
}最后{
IOUtils.closeStream(读卡器);
}
}
}

您可以使用“hadoop fs-text-seqfile”命令将seq文件转换为文本文件,尽管…

将文件从seq更改为text不是一个合适的解决方案..尝试查看问题..您可以尝试类似的方法来读取键/值对-

public class SequenceFileReader {
    public static void main(String args[]) throws Exception {
        System.out.println("Readeing Sequence File");
        Configuration conf = new Configuration();
        conf.addResource(new Path("/home/mohammad/hadoop-0.20.203.0/conf/core-site.xml"));
        conf.addResource(new Path("/home/mohammad/hadoop-0.20.203.0/conf/hdfs-site.xml"));  
        FileSystem fs = FileSystem.get(conf);
        Path path = new Path("/seq/file");
        SequenceFile.Reader reader = null;      
        try {
            reader = new SequenceFile.Reader(fs, path, conf);
            Writable key = (Writable) ReflectionUtils.newInstance(reader.getKeyClass(), conf);
            Writable value = (Writable) ReflectionUtils.newInstance(reader.getValueClass(), conf);
            while (reader.next(key, value)) {
                System.out.println(key + "  <===>  " + value.toString());
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            IOUtils.closeStream(reader);
        }
    }
}
公共类SequenceFileReader{
公共静态void main(字符串args[])引发异常{
System.out.println(“读取序列文件”);
Configuration conf=新配置();
conf.addResource(新路径(“/home/mohammad/hadoop-0.20.203.0/conf/core-site.xml”);
conf.addResource(新路径(“/home/mohammad/hadoop-0.20.203.0/conf/hdfs site.xml”);
FileSystem fs=FileSystem.get(conf);
路径路径=新路径(“/seq/file”);
SequenceFile.Reader=null;
试一试{
reader=newsequencefile.reader(fs,path,conf);
可写键=(可写)ReflectionUtils.newInstance(reader.getKeyClass(),conf);
可写值=(可写)ReflectionUtils.newInstance(reader.getValueClass(),conf);
while(reader.next(键、值)){
System.out.println(key+“”+value.toString());
}
}捕获(例外e){
e、 printStackTrace();
}最后{
IOUtils.closeStream(读卡器);
}
}
}

您可以使用“hadoop fs-text-seqfile”命令将seq文件转换为文本文件,但是…

转换后test.seq和test.txt之间会有大小差异吗?如果是,任意或任何公式?@^:通常,与图像/音频/视频序列文件相比,文本序列文件的压缩程度更高。压缩取决于相应文件的内容。所以,据我所知,我们不能给出一个固定的公式。test.seq和test.txt之间转换后会有大小差异吗?如果是,任意或任何公式?@^:通常,与图像/音频/视频序列文件相比,文本序列文件的压缩程度更高。压缩取决于相应文件的内容。所以,据我所知,我们不能给出一个固定的公式。