参考:http://f.dataguru.cn/thread-85493-1-1.html
这时学习Hadoop以来写的第一个成功的程序,程序仿照《Hadoop实战》中的PutMerge程序,这里有几个要注意的地方:
1.hdfs的地址是一个网络地址,如下面的:hdfs://localhost:9000/test3
2.确保不会出现“权限不足”的异常
import java.io.IOException;
import java.net.URI;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
/**
*
*/
/**
* Hadoop版本1.2.1
* 系统ubuntu 12.04
* JDK 1.7
*
*/
public class PutMerge {
public static void main(String[] args) throws IOException {
Configuration conf = new Configuration();
Path inputDir = new Path("/home/hadoop/input");
String serverPath = "hdfs://localhost:9000/test3";
Path hdfsfile = new Path(serverPath);
FileSystem hdfs = FileSystem.get(URI.create(serverPath), conf);
FileSystem local = FileSystem.getLocal(conf);
FileStatus[] status = local.listStatus(inputDir);
FSDataOutputStream out = hdfs.create(hdfsfile);
for(int i = 0; i < status.length; i++) {
FSDataInputStream in = local.open(status[i].getPath());
byte buffer[] = new byte[256];
int byteread = 0;
while((byteread = in.read(buffer)) > 0) {
out.write(buffer);
}
in.close();
}
out.close();
}
}