许多功能语言都定义了flatMap
功能,其功能类似于map
但可以使返回值变平。Spark / pyspark拥有http://spark.apache.org/docs/latest/api/python/pyspark.html#pyspark.RDD.flatMap
什么是最好的方式来拥有它?我的代码如下所示:
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方法
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]
因此,可以使用两个操作“ map”和“ flatten”来代替结合使用的“ flatMap”操作,这些操作可以单独使用,也可以根据需要使用链式操作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句