使用java将目录内容从本地文件系统移动到hdfs

5lhxktic  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(368)

我有一个源目录( /home/src )在包含2个文件的本地文件系统中 file1.txt 以及 file2.txt 我想把它们复制到目标目录( /user/dest )在 HDFS 通过密码。

import org.apache.hadoop.fs.FileUtil;

当我使用 FileUtil 从本地移动内容的api src 至hdfs dest ,它正在移动 src 还有目录。

FileUtil.copy("/home/src", fs, "/user/dest", true, conf);

有没有办法,我只能移动目录的内容 srcdest 使用 Java 应用程序编程接口?

qvtsj1bj

qvtsj1bj1#

Hadoop 已内置 API 可用于从本地复制到 hdfs 你只需要 import 必要的图书馆和呼叫 apis 如下所示
这将复制 src 文件夹从本地到 /user/dest/hdfs 如果要复制单个文件,请遵循以下方法:列出文件并复制单个文件(如果需要,我们也可以过滤文件)

import org.apache.hadoop.conf.Configuration
 import org.apache.hadoop.fs.FileSystem
 import org.apache.hadoop.fs.Path

 FileSystem file = FileSystem.get(new Configuration())

File[] sourceFiles = new File("/home/src").listFiles();
            if(sourceFiles != null) {
                for(File f: sourceFiles) {
                    //we can filter files if needed here
                    file.copyFromLocalFile(true, true, new Path(f.getPath()), new Path("/user/dest"));
                }
            }

我希望这是有帮助的

相关问题