Java SequenceFile到.txt的转换
有没有办法将序列文件转换成.txt文件?sequencefile是在hadoop作业之后生成的,当我尝试使用SequenceFileReader读取sequencefile时,该作业会给我一个EOFEException,尽管该作业成功完成。因此,我认为我可以将序列文件复制到本地系统,然后在可能的情况下转换为txt格式。将文件从seq更改为text不是一个合适的解决方案。.尝试查看问题。.您可以尝试类似的方法来读取键/值对-Java SequenceFile到.txt的转换,java,hadoop,Java,Hadoop,有没有办法将序列文件转换成.txt文件?sequencefile是在hadoop作业之后生成的,当我尝试使用SequenceFileReader读取sequencefile时,该作业会给我一个EOFEException,尽管该作业成功完成。因此,我认为我可以将序列文件复制到本地系统,然后在可能的情况下转换为txt格式。将文件从seq更改为text不是一个合适的解决方案。.尝试查看问题。.您可以尝试类似的方法来读取键/值对- public class SequenceFileReader {
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之间转换后会有大小差异吗?如果是,任意或任何公式?@^:通常,与图像/音频/视频序列文件相比,文本序列文件的压缩程度更高。压缩取决于相应文件的内容。所以,据我所知,我们不能给出一个固定的公式。