Skip to main content
 首页 » 编程设计

python之dask 中的 flatMap

2024年08月21日38arxive

许多函数式语言都定义了 flatMap 函数,它的工作方式类似于 map 但可以展平 返回值。 Spark/pyspark 有 http://spark.apache.org/docs/latest/api/python/pyspark.html#pyspark.RDD.flatMap

在 dask 中获得它的最佳方式是什么? 我的代码如下所示:

import dask.bag as db 
import json 
from tools import get_records 
 
records = db.read_text(json_file).map(json.loads).map(get_records) 

get_records 返回字典列表。我只需要将它们链接成一个序列。

请您参考如下方法:

您可能需要 .flatten method

In [1]: import dask.bag as db 
 
In [2]: b = db.from_sequence([1, 2, 3, 4, 5]) 
 
In [3]: def f(i): 
   ...:     return list(range(i)) 
   ...:  
 
In [4]: b.map(f).compute() 
Out[4]: [[0], [0, 1], [0, 1, 2], [0, 1, 2, 3], [0, 1, 2, 3, 4]] 
 
In [5]: b.map(f).flatten().compute() 
Out[5]: [0, 0, 1, 0, 1, 2, 0, 1, 2, 3, 0, 1, 2, 3, 4] 

因此,代替连接的“flatMap”操作,有两个操作“map”和“flatten”,您可以单独使用它们,也可以根据需要进行链接。