gpt4 book ai didi

java - 如何使用Java代码将文件上传和下载到hdfs

转载 作者:可可西里 更新时间:2023-11-01 16:31:56 28 4
gpt4 key购买 nike

我是 hadoop 的新手,正在尝试通过 hdfs 上传和下载文件。 Java 代码。这应该表现为

数据上传:

 hadoop fs -put or -copyFromLocal filename directoryName

和数据下载

  hadoop fs -get or -copyToLocal filename directoryName

来自高清文件系统。我需要这个,因为数据集包含图像、音频、视频等文件。上面的命令适用于所有类型的数据,如果我尝试使用 Java i/o 阅读器代码,它适用于文本文件,但不适用于图像、视频。 docx等..

请在这里帮忙。

在此处编辑:

public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub

Configuration conf=new Configuration();
FileSystem fs = FileSystem.get(conf);

Path path=new Path("data");
Path file=new Path(path,"screenshots.png");

BufferedImage image = ImageIO.read(new File("/home/hduser/Desktop/screenshots.png"));
if (!fs.exists(path))
throw new IOException("Output not found!");

ImageIO.write(image, "png", fs.open(path));


}

正如我所要求的,我在这里编辑了我用来将图像文件上传到 hdfs 的代码。这里 ImageIO.write 不接受争论 fs.open(path) ,因为要求文件,但我必须在这里给出读取和写入 hdfs 的路径我们只需要给出路径。实际上我需要一种方法来使用所有类型数据的代码从 hdfs 上传和下载文件,所以我不应该为所有类型的文件编写代码和使用插件。

最佳答案

ImageIO.write 可以采用 OutputStream 和文件。但是,fs.open 返回一个 InputStream,因为它仅用于读取文件。

您需要调用:

ImageIO.write(image, "png", fs.create(file));

create 方法将返回一个 ImageIO 可以写入的 OutputStream

http://hadoop.apache.org/docs/r2.2.0/api/org/apache/hadoop/fs/FileSystem.html

关于java - 如何使用Java代码将文件上传和下载到hdfs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27634094/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com