【问题标题】:Understanding what map_partitions in dask does了解 dask 中的 map_partitions 的作用
【发布时间】:2017-11-06 13:37:23
【问题描述】:

我试图了解map_partitions in dask 的作用。这是我的例子:

import dask.dataframe as dd
import pandas as pd
from dask.multiprocessing import get
import random

df = pd.DataFrame({'col_1':random.sample(range(10000), 100), 'col_2': random.sample(range(10000), 100) })

def test_f(df):
    print(df.col_1)
    print("------------")

ddf = dd.from_pandas(df, npartitions=8)

ddf['result'] = ddf.map_partitions(test_f ).compute(get=get)

这是输出:

0    1.0
1    1.0
Name: col_1, dtype: float64
------------

为什么我的数据框没有完整打印出来?输出是什么意思?

【问题讨论】:

  • 我们是否可以使用 map_partitions 提高速度?

标签: python dataframe parallel-processing dask


【解决方案1】:

map_partitions 采用可选的meta= 关键字,您可以使用它告诉 Dask 您希望函数输出的外观。这通常是一个好主意,因为它避免了 Dask 必须推断输出的外观,这可能会导致不重要的工作发生。

在没有meta= 的情况下,Dask 将首先调用您的函数,以推断输出,然后对每个分区进行推断。你看到的是第一个。如果您提供任何meta=,您将只能看到分区。显然,您希望提供实际的预期输出模板;但在你的情况下,该函数实际上并没有返回任何东西。

为了避免仅仅为了推理而进行过多的工作,Dask 使用了典型的虚拟值。在这种情况下,对于每个浮点列,使用 1.0 的值,并且有多个行以确保输入看起来像一个数据框而不是一个系列。

【讨论】:

    猜你喜欢
    • 2019-01-07
    • 2021-09-30
    • 1970-01-01
    • 2022-08-06
    • 1970-01-01
    • 2020-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多