如何仅从rdd更改零件

时间:2016-06-06 11:10:06

标签: apache-spark tiff rdd

我想修改一个tif图像的前100帧,它是通过spark和thunder加载的。

我想将percentile_image分配给前100帧。

data = td.images.fromtif(path,'tif',None,None,False,1,10,None,sc,None).cache()

downSampledImage = data.subsample(2)

percentile_image = np.int16(np.percentile(downSampledImage[0:99, :, :], 40, 0))

我无法弄清楚如何只使用一小部分地图功能。

1 个答案:

答案 0 :(得分:0)

好的,我对RDD中的图像并不是很熟悉。但是,我将解释一些有关RDD的概念性内容,这些内容可能有助于您了解如何解决问题。

  1. RDD除非已排序,否则没有固有排序。将某些东西放入并行化的分布式数据结构后,就没有“第一个”100个图像或“最后”图像。是的,你可以调用data.first(),但实际上它只是转到它拥有的第一个分区,找到它找到的第一行,并将其发送给驱动程序。 first有点误导。它更像random

  2. 在RDD上执行操作时,使用mapmap将应用于每一行。现在,您可以使用if-else语句来确保您想要涉及百分位数的转换仅适用于某组100行。所以你可以做到

    如果(行)符合(条件):     np.int16(np.percentile(downSampledImage [0:99,:,:],40,0))

  3. 但是,这要求前100行符合某些条件,以便您可以将它们标记为相关。