java如何将hdfs文件下载到本地

46次阅读
没有评论

共计 1245 个字符,预计需要花费 4 分钟才能阅读完成。

可以使用 FileSystem 类和 FSDataInputStream 类来实现将 HDFS 文件下载到本地。

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FSDataOutputStream;

public class DownloadHDFSFile {public static void main(String[] args) {try {Configuration conf = new Configuration();
            conf.set("fs.defaultFS", "hdfs://localhost:8020");
            FileSystem fs = FileSystem.get(conf);

            Path hdfsFilePath = new Path("/path/to/hdfs/file");
            Path localFilePath = new Path("/path/to/local/file");

            FSDataInputStream in = fs.open(hdfsFilePath);
            FSDataOutputStream out = new FSDataOutputStream(new FileOutputStream(localFilePath), null);

            byte[] buffer = new byte[1024];
            int bytesRead;
            while ((bytesRead = in.read(buffer)) > 0) {out.write(buffer, 0, bytesRead);
            }

            in.close();
            out.close();
            fs.close();

            System.out.println("HDFS file downloaded successfully.");
        } catch (Exception e) {e.printStackTrace();
        }
    }
}

在上面的代码中,首先创建了一个 Configuration 对象,设置了 HDFS 的配置信息。然后通过 FileSystem.get(conf) 方法获取一个 FileSystem 对象,用来操作 HDFS 文件系统。

接着指定需要下载的 HDFS 文件的路径 hdfsFilePath 和本地文件的路径 localFilePath。使用fs.open(hdfsFilePath) 方法打开 HDFS 文件,并创建一个 FSDataOutputStream 对象来写入本地文件。

然后使用一个循环读取 HDFS 文件的内容,并写入本地文件,直到文件读取完毕。最后关闭输入流、输出流和文件系统对象,完成文件下载操作。

请注意,需要在项目中引入 Hadoop 的相关依赖包,以便能够正常编译和运行上面的代码。

丸趣 TV 网 – 提供最优质的资源集合!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2024-04-07发表,共计1245字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)