读取Hadoop分布式文件系统中的内容
程序员文章站
2022-07-14 15:20:29
...
先上代码:
package com.hadoop;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
/**
* @Author Administrator
* @Date 2018/5/27 14:31
*/
public class HDFSDemo {
public static void main(String[] args) throws IOException {
Configuration conf=new Configuration();
FileSystem fileSystem=FileSystem.get(conf);
Path path=new Path("hdfs://192.168.244.3:9000/user/zhang/hadoop/test.txt");
FSDataInputStream fsDataInputStream=fileSystem.open(path);
ByteArrayOutputStream byteArrayOutputStream=new ByteArrayOutputStream();
IOUtils.copyBytes(fsDataInputStream,byteArrayOutputStream,1024);
fsDataInputStream.close();
System.out.println(new String(byteArrayOutputStream.toByteArray()));
}
}
注意path中的参数,我这里用的是IP+端口的方式。
还有就是要在资源文件中加上core-site.xml文件。如果不加,会报:
Exception in thread "main" java.lang.IllegalArgumentException: Wrong FS: hdfs://192.168.244.3:9000/user/zhang/hadoop/test.txt, expected: file:///
这样的错误。