题目:自行在本地文件系统生成一个大约100字节的文本文件,写一段程序(可以利用Java API或C API),读入这个文件,并将其第101-120字节的内容写入HDFS成为一个新文件
1.本地文件
2.[Java]代码
[hadoop@Master myclass]$ pwd
/usr/hadoop/myclass
[hadoop@Master myclass]$ vim CopyFileFromLocalToHDFS.java
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URI;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;
import org.apache.hadoop.util.Progressable;
public class CopyFileFromLocalToHDFS {
public static void main(String[] args) throws IOException {
String localSrc = args[0];
String dst = args[1];
InputStream in = new BufferedInputStream(new FileInputStream(localSrc));
byte buf[] = new byte[4096];
in.read(buf,0,100);//去掉前面的100个字节
Configuration conf = new Configuration();
FileSystem fs = FileSystem.get(URI.create(dst), conf);
Path path = new Path(dst);
OutputStream out = fs.create(path,true,1024,new Progressable() {
public void progress() {
System.out.print("----");
}
});
IOUtils.copyBytes(in, out, 20, 1024, true);//20是取20个字节,这样就取到101-120的字节了。
}
}
3.编译执行程序
[hadoop@Master myclass]$ javac -classpath /usr/hadoop/hadoop-core-1.2.1.jar CopyFileFromLocalToHDFS.java