Python 分布式工作dask中的内存泄漏
我在dask中使用分布式工作者来进行丑陋的并行计算Python 分布式工作dask中的内存泄漏,python,dask-distributed,Python,Dask Distributed,我在dask中使用分布式工作者来进行丑陋的并行计算 import dask.dataframe as dd import json import os import dask.bag as db import pandas as pd from dask.distributed import Client def decode_utf8(input_string): return json.loads(input_string.encode().decode("utf-8-sig"))
import dask.dataframe as dd
import json
import os
import dask.bag as db
import pandas as pd
from dask.distributed import Client
def decode_utf8(input_string):
return json.loads(input_string.encode().decode("utf-8-sig"))
def read_json_file(file_path):
return db.read_text(file_path).map(decode_utf8)
def batch_process_id(local_path, output_path):
start_time = time.time()
client = Client()
print("-" * 30)
dask_df = read_json_file(local_path).to_dataframe()
dask_df.repartition(npartitions=160)
dask_ecounter_id_schema = ("dummy_id","int")
temp_series = dask_df["Encounter"].apply(lambda row: int(row["Id"]) if "Id" in row else -1,
meta = dask_ecounter_id_schema)
temp_series.compute()
if __name__ == "__main__":
local_path_list = ["./sessions-201906*.txt",
]
output_path_list = ["./flowsheet06"]
for i in range(len(local_path_list)):
batch_process_id(local_path_list[i], output_path_list[i])
我使用的是4核集群,总内存为16GB。
在sessions-201906*.txt和大约40个文件中,文件大小在0.4GB到0.9GB之间变化
在运行程序时,我遇到了以下问题:
1.Distributed.worker-警告-内存使用率很高,但worker没有可存储到磁盘的数据。也许其他进程正在泄漏内存?进程内存:3.27 GB--工作内存限制:4.08 GB
2.distributed.utils_perf-警告-最近完全垃圾收集占用了34%的CPU时间(阈值:10%)
distributed.worker-WARNING-gc.collect()花费了1.904s。这通常是某些任务同时处理太多Python对象的迹象。将工作重新组合成更小的任务可能会有所帮助
有人能提供处理这些问题的建议吗?即使我没有使用apply to dask.series,也只是将dask.series分配给变量temp_series=dask_df[“遭遇”],仍然可以看到sam问题。