package com.imooc.mr;
import org.apache.commons.io.FileUtils;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.SequenceFile;
import org.apache.hadoop.io.Text;
import java.io.File;
public class SmallFileSeq {
public static void main(String[] args) throws Exception{
write("D:\\smallFile","/seqFile");
read("/seqFile");
}
private static void write(String inputDir,String outputFile) throws Exception{
Configuration conf = new Configuration();
conf.set("fs.defaultFS","hdfs://bigdata01:9000");
FileSystem fileSystem = FileSystem.get(conf);
fileSystem.delete(new Path(outputFile),true);
SequenceFile.Writer.Option[] opts = new SequenceFile.Writer.Option[]{
SequenceFile.Writer.file(new Path(outputFile)),
SequenceFile.Writer.keyClass(Text.class),
SequenceFile.Writer.valueClass(Text.class)
};
SequenceFile.Writer writer = SequenceFile.createWriter(conf, opts);
File inputDirPath = new File(inputDir);
if(inputDirPath.isDirectory()){
File[] files = inputDirPath.listFiles();
for (File file: files) {
String content = FileUtils.readFileToString(file, "UTF-8");
String fileName = file.getName();
Text key = new Text(fileName);
Text value = new Text(content);
writer.append(key,value);
}
}
writer.close();
}
private static void read(String inputFile) throws Exception{
Configuration conf = new Configuration();
conf.set("fs.defaultFS","hdfs://bigdata01:9000");
SequenceFile.Reader reader = new SequenceFile.Reader(conf, SequenceFile.Reader.file(new Path(inputFile)));
Text key = new Text();
Text value = new Text();
while(reader.next(key,value)){
System.out.print("文件名:"+key.toString()+",");
System.out.println("文件内容:"+value.toString()+"");
}
reader.close();
}
}