dask 中的 flatMap
flatMap in dask
许多函数式语言定义了 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
returns 字典列表。我只需要将它们链接成一个序列。
您可能想要 .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]
所以有两个操作 "map" 和 "flatten" 而不是连接的 "flatMap" 操作,您可以单独使用或按您的喜好链接。
许多函数式语言定义了 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
returns 字典列表。我只需要将它们链接成一个序列。
您可能想要 .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]
所以有两个操作 "map" 和 "flatten" 而不是连接的 "flatMap" 操作,您可以单独使用或按您的喜好链接。