题目:查看Java帮助手册或其它资料,用“java.net.URL”和“org.apache.hadoop.fs.FsURLStreamHandlerFactory”编程完成输出HDFS中指定文件的文本到终端中。

java代码:

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.fs.FileSystem;

import org.apache.hadoop.fs.FSDataInputStream;

import org.apache.hadoop.fs.Path;

public class MyFSDataInputStream extends FSDataInputStream {

private static final int BUFFER_SIZE = 4096;

private byte[] buffer;

private int pos;

private int end;

private boolean eof;

public MyFSDataInputStream(FileSystem fs, Path file) throws IOException {

super(fs.open(file));

buffer = new byte[BUFFER_SIZE];

pos = 0;

end = 0;

eof = false;

}

public String readNextLine() throws IOException {

StringBuilder sb = new StringBuilder();

int b = -1;

boolean found = false;

while (!eof && !found) {

if (pos >= end) {

fillBuffer();

}

if (end == -1) {

eof = true;

}

while (pos < end) {

b = buffer[pos++];

if (b == '\r' || b == '\n') {

found = true;

break;

}

sb.append((char) b);

}

}

if (sb.length() == 0 && eof) {

return "";

} else {

return sb.toString();

}

}

private void fillBuffer() throws IOException {

end = in.read(buffer);

pos = 0;

}

public static void main(String[] args) throws IOException {

if (args.length < 1) {

System.err.println("Usage: MyFSDataInputStream ");

System.exit(1);

}

String filePath = args[0];

Configuration conf = new Configuration();

Path path = new Path(filePath);

FileSystem fs = FileSystem.get(path.toUri(), conf);

MyFSDataInputStream in = new MyFSDataInputStream(fs, path);

String line;

while ((line = in.readNextLine()) != null) {

System.out.println(line);

}

in.close();

}

}

命令:

1. start-dfs.sh

2. vim file.txt

3. hadoop fs -mkdir /user/hadoop/input

4. hadoop fs -put /root/file.txt /user/hadoop/input

5. cd /usr/local/hadoop/share

6. ls

7. vim ReadHdfsFileFromURL.java

8. ls

9. javac -classpath /usr/local/hadoop/share/hadoop/common/hadoop-common-2.7.4.jar ReadHdfsFileFromURL.java

10. ls

11. HADOOP_CLASSPATH=. hadoop ReadHdfsFileFromURL

结果:

精彩链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: