用Java从本地上传文件到hdfs代码
时间: 2023-09-03 21:26:34 浏览: 123
### 回答1:
要用Java从本地上传文件到HDFS,你可以使用Hadoop的Java API。下面是一个示例代码:
```
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
public class Main {
public static void main(String[] args) throws Exception {
// 设置HDFS的配置信息
Configuration conf = new Configuration();
conf.set("fs.defaultFS", "hdfs://namenode:9000");
// 创建文件系统对象
FileSystem fs = FileSystem.get(conf);
// 本地文件路径
Path srcPath = new Path("/path/to/local/file");
// HDFS目标路径
Path dstPath = new Path("/path/to/hdfs/dst");
// 上传文件到HDFS
fs.copyFromLocalFile(srcPath, dstPath);
// 关闭文件系统
fs.close();
}
}
```
在这段代码中,我们使用了Hadoop的`Configuration`类来设置HDFS的配置信息,然后使用`FileSystem.get()`方法来获取文件系统对象。接着,我们使用`Path`类来表示本地文件路径和HDFS目标路径。最后,我们使用`FileSystem`对象的`copyFromLocalFile()`方法来上传文件到HDFS,并在最后关闭文件系统。
注意:在使用Hadoop的Java API之前,你需要在你的项目中添加Hadoop的依赖。
### 回答2:
以下是一个使用Java将本地文件上传到HDFS的示例代码:
```java
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import java.io.File;
import java.io.IOException;
public class FileUploader {
public static void main(String[] args) {
String localFilePath = "/path/to/local/file.txt";
String hdfsFolderPath = "/path/in/hdfs/";
Configuration conf = new Configuration();
conf.set("fs.defaultFS", "hdfs://localhost:9000"); // 设置HDFS地址
try {
FileSystem fs = FileSystem.get(conf);
Path localPath = new Path(localFilePath);
Path hdfsPath = new Path(hdfsFolderPath + localPath.getName());
fs.copyFromLocalFile(localPath, hdfsPath); // 从本地复制文件到HDFS
System.out.println("文件上传成功!");
fs.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
请注意替换代码中的`localFilePath`和`hdfsFolderPath`变量为实际的本地文件路径和HDFS文件夹路径。此外,还需要根据你的Hadoop集群配置适当修改`conf.set("fs.defaultFS", "hdfs://localhost:9000")`行中的HDFS地址。程序运行后,它将把本地文件上传到指定的HDFS路径中。在上传完成后,控制台将输出"文件上传成功!" 的提示信息。
### 回答3:
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import java.io.File;
import java.io.IOException;
public class LocalFileToHDFS {
public static void main(String[] args) {
// 配置Hadoop环境
Configuration configuration = new Configuration();
configuration.set("fs.defaultFS", "hdfs://localhost:9000");
FileSystem fileSystem;
try {
// 获取HDFS文件系统
fileSystem = FileSystem.get(configuration);
// 本地文件路径
String localFilePath = "path/to/local/file";
// HDFS文件路径
String hdfsFilePath = "path/to/hdfs/file";
// 上传文件到HDFS
fileSystem.copyFromLocalFile(new Path(localFilePath), new Path(hdfsFilePath));
System.out.println("文件上传成功!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
以上代码可以将本地文件上传到HDFS,其中需要将"localhost:9000"修改为HDFS的地址,"path/to/local/file"修改为本地文件的路径,"path/to/hdfs/file"修改为上传到HDFS的路径。
阅读全文