Java操作HDFS主要涉及以下几个重要的类:
1. Configuration:封装了客户端或者服务器的配置信息。这个类主要用于设置HDFS的连接参数,例如NameNode的地址、端口号等。通过创建Configuration对象并设置相应的参数,可以配置HDFS客户端的行为。
2. FileSystem:此类的对象是一个文件系统对象,可以用该对象的一些方法来对文件进行操作。通过FileSystem的静态方法get获得该对象,例如:`FileSystem hdfs = FileSystem.get(conf)`。在获取到FileSystem对象后,可以使用其提供的方法来执行各种文件操作,如创建目录、上传文件、下载文件等。
3. FSDataInputStream:这是HDFS中的输入流,用于从HDFS中读取数据。通过由FileSystem的open方法获取,例如:`FSDataInputStream in = hdfs.open(new Path("hdfs://localhost:9000/path/to/file"))`。FSDataInputStream提供了read()方法来读取文件中的数据,以及close()方法来关闭输入流。
4. FSDataOutputStream:这是HDFS中的输出流,用于向HDFS中写入数据。通过由FileSystem的create方法获取,例如:`FSDataOutputStream out = hdfs.create(new Path("hdfs://localhost:9000/path/to/output/file"))`。FSDataOutputStream提供了write()方法来将数据写入文件中,以及close()方法来关闭输出流。
这些类共同提供了与HDFS交互的基本功能,使得Java程序能够方便地访问和操作HDFS上的文件。
package hadoop;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
public class HadoopLocalExample {
public static void main(String[] args) throws Exception {
// 创建Hadoop配置对象
Configuration conf = new Configuration();
// 设置HDFS的地址和端口
conf.set("fs.defaultFS", "hdfs://master:9000");
// 获取本地文件系统对象
FileSystem fs = FileSystem.get(conf);
// 定义本地文件路径
Path localPath = new Path("D:\\project\\java\\test\\test\\data\\C.txt");
// 定义HDFS目标路径
Path hdfsPath = new Path("hdfs://master:9000/a/input/C.txt");
// 从本地文件系统复制到HDFS
fs.copyFromLocalFile(localPath, hdfsPath);
// 关闭文件系统对象
fs.close();
}
}
09-06
332
03-20
4849