Nyx*_*nyx 5 python python-3.x pandas dask dask-distributed
我在一台计算机上运行 Dask,在该计算机上运行.compute()对巨大 parquet 文件执行计算将导致 dask 耗尽系统上的所有 CPU 核心。
import dask as dd
df = dd.read_parquet(parquet_file) # very large file
print(df.names.unique().compute())
Run Code Online (Sandbox Code Playgroud)
是否可以将 dask 配置为使用特定数量的 CPU 核心并将其内存使用限制为 32 GB?使用Python 3.7.2和Dask 2.9.2。
Dask.distributed.Client 创建一个 LocalCluster,您可以为其显式设置内存使用和核心数量。
import numpy as np
import pandas as pd
from dask.distributed import Client
from dask import dataframe as dd
def names_unique(x):
return x['Names'].unique()
client = Client(memory_limit='2GB', processes=False,
n_workers=1, threads_per_worker=2)
# Data generation
df = pd.DataFrame({'Names': np.random.choice(['A', 'B', 'C', 'D'], size=1000000),
'sales': np.arange(1000000)})
df.to_parquet('parq_df')
ddf = dd.read_parquet('parq_df', npartitions=10)
# Custom computation
sent = client.submit(names_unique, ddf)
names_unique = sent.result().compute()
client.close()
Run Code Online (Sandbox Code Playgroud)
输出:
names_unique
Out[89]:
0 D
1 B
2 C
3 A
Name: Names, dtype: object
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2678 次 |
| 最近记录: |