相当于Python中的pySpark flatMap

2024-10-02 04:25:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在寻找一个函数来展平列表数组。 首先,我在RDD系统上使用apachspark函数flatMap实现了我的解决方案,但我希望在本地实现这一点。但是,我找不到

samples = filtered_tiles.flatMap(lambda tile: process_tile(tile, sample_size, grayscale))

在python3中。有什么解决办法吗?在

数组格式为:

^{pr2}$

谨致问候


Tags: samplelambda函数列表系统数组解决方案process
1条回答
网友
1楼 · 发布于 2024-10-02 04:25:22

下面是PySpark在RDD上的flatMap示例:

sc.parallelize([3,4,5]).flatMap(lambda x: range(1,x)).collect()

会有结果的

^{pr2}$

与仅map相反,后者将产生{}(用于比较)。在

flatMap也只做了一个级别的“不需要”。换句话说,如果你有一个3d列表,它只会将其展平为2d列表。所以,我们要让我们的压扁机也这样做。在

正如在评论中提到的,您所要做的就是调用内置的map,并创建一个平坦函数,并将它们链接在一起。方法如下:

def flatMap(f, li):
    mapped = map(f, li)
    flattened = flatten_single_dim(mapped)
    yield from flattened

def flatten_single_dim(mapped):
    for item in mapped:
        for subitem in item:
            yield subitem

回到我们的例子,快速检查一下是否正常:

res = flatMap(lambda x: range(1, x), [3,4,5])
print(list(res))

哪些输出:

^{pr2}$

如你所愿。你应该做flatMap(lambda tile: process_tile(tile, sample_size, grayscale), filtered_tiles)(给定filtered_tiles是一个iterable)。在

另请注意,您可以在“local”模式下运行Spark,只需在rdd上调用flatMap。它可以很好地在你的本地机器上制作小东西的原型。然后,当您准备扩展时,您可以使用一些集群管理器钩住集群,并拥有需要剥离的TBs数据。在

好吧。在

相关问题 更多 >

    热门问题