gpt4 book ai didi

java - 如何将图像从HDFS加载到Spark

转载 作者:行者123 更新时间:2023-12-02 22:08:38 25 4
gpt4 key购买 nike

我想将HDFS中的图像加载到spark的RDD中。
然后使用Spark处理这些图像。

我测试了:

JavaPairRDD<String, String> pairRdd = jsc.wholeTextFiles("hdfs://cluster-1-m/user/username/images/"); 

将图像从HDFS加载到Spark的RDD。

然后,当我调用imread方法读取图像时:
Mat image = imread(value._1()); // value is the tuple2<String, String> comming from pairRdd  

我发现图像为空!

我在用:
  • Java
  • Spark 2.0.2
  • Hadoop 2.7.3
  • 最佳答案

    该图像为空,因为value._1()是HDFS路径,而不是JavaCV期望的本地文件。从HDFS的 Angular 来看,它不是“整个文件”,因为它们被分解并分布在块中。

    您需要先从HDFS下载文件,然后才能使用JavaCV在本地对其进行处理。

    使用本地Hadoop API代替Spark,您可以做到这一点。

    Copying file from HDFS to Local Machine

    或者,您可以尝试将value._2()的内容流式传输到File对象。 (实际上,您可能想要binaryFiles(path)方法来代替非文本的任何内容,例如图像)。

    换句话说,除了扫描HDFS目录之外,您这里没有“使用Spark”。另一种解决方案是通过RDD上的map(),通过JAR文件将JavaCV打包到Spark代码中,然后您需要将镜像下载到Spark执行程序,如前所述。

    关于java - 如何将图像从HDFS加载到Spark,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45399475/

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