写hdfs程序,将本地文件上传至hdfs集群 代码
时间: 2024-09-11 13:04:47 浏览: 45
在Hadoop分布式文件系统(HDFS)中,通常我们会使用Hadoop的API,如`java.io.FileOutputStream`或`org.apache.hadoop.fs.FileSystem`来进行文件操作。以下是一个简单的Java示例,展示如何通过Hadoop的FileSystem API将本地文件上传到HDFS:
```java
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
public class HdfsUploader {
public static void main(String[] args) throws Exception {
// 初始化配置
Configuration conf = new Configuration();
String hdfsUrl = "hdfs://your-hdfs-cluster-url"; // 替换为你的HDFS集群地址
Path filePath = new Path("your-local-file-path"); // 替换为你本地要上传的文件路径
Path hdfsFilePath = new Path(hdfsUrl + "/target/hdfs-file"); // HDFS目标路径
// 设置HDFS连接
FileSystem fs = FileSystem.get(conf);
// 检查目标目录是否存在,如果不存在则创建
if (!fs.exists(hdfsFilePath.getParent())) {
fs.mkdirs(hdfsFilePath.getParent());
}
// 从本地文件系统读取并写入HDFS
FileInputStream fis = new FileInputStream(filePath);
FSDataOutputStream out = fs.create(hdfsFilePath);
byte[] buffer = new byte[1024];
int length;
while ((length = fis.read(buffer)) != -1) {
out.write(buffer, 0, length);
}
fis.close();
out.close();
System.out.println("File uploaded to HDFS at: " + hdfsFilePath);
}
}
```
记得替换`your-hdfs-cluster-url`、`your-local-file-path`以及`target/hdfs-file`为你实际的集群URL、本地文件路径及HDFS目标路径。
阅读全文