Java代码读取txt文件,然后加载到hdfs上的示例代码
时间: 2024-09-09 07:03:38 浏览: 37
在Java中,我们可以使用Hadoop的API来读取本地文本文件(如.txt),并将数据加载到HDFS(Hadoop Distributed File System)。以下是使用Apache Hadoop API的一个简单示例:
```java
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class LocalToHDFS {
public static void main(String[] args) throws IOException {
Configuration conf = new Configuration();
FileSystem fs = FileSystem.get(conf);
// 本地文件路径
Path localFilePath = new Path("file:///path/to/your/local/text.txt");
// HDFS目标路径
Path hdfsTargetPath = new Path("/path/in/hdfs/where/to/save.txt");
// 创建目录(如果不存在)
boolean createDir = fs.mkdirs(hdfsTargetPath.getParent());
if (!createDir) {
System.err.println("Failed to create directory in HDFS");
return;
}
try (BufferedReader br = new BufferedReader(new FileReader(localFilePath))) {
String line;
while ((line = br.readLine()) != null) {
// 这里可以对每一行做处理,比如编码转换等,然后写入HDFS
fs.append(hdfsTargetPath, () -> new DataOutputStream(fs.create(hdfsTargetPath)), line.getBytes("UTF-8"));
}
}
System.out.println("Data from local file has been copied to HDFS at " + hdfsTargetPath);
}
}
```
在这个示例中,我们首先创建一个`Configuration`对象,这是与HDFS交互的基础。然后,我们通过`FileSystem.get()`方法获取到`FileSystem`实例。接着,我们读取本地文件的内容,并将每一行写入HDFS。
注意,你需要在集群上安装Hadoop,并配置好环境才能运行这段代码。
阅读全文