IPython负载均衡器无法读取文件

时间:2014-09-12 20:15:44

标签: pandas parallel-processing ipython

我刚开始使用IPython笔记本中的Load Balancer功能。

我要做的是分发在多个核心上加载大型csv文件的功能。

以下是创建负载平衡视图的示例代码:

from IPython.parallel import Client
cluster = Client()
lb_view = cluster.load_balanced_view()

然后我尝试通过跟随发货机来阅读带有pandas的csv

@lb_view.parallel(block=True)
def read_csv(f):
    import pandas as pd
    data = pd.read_csv(f, iterator=True, chunksize=1e6)
    df = [chunk.groupby(by='ip_address').count() for chunk in data]
    return pd.concat(df)

失败并出现非常奇怪的错误(好像该文件不存在)

CParserError: Passed header=0 but only 0 lines in file

我接下来尝试使用以下代码片段来检查是否在引擎上找到了文件

@lb_view.parallel(block=True)
def read_csv(f):
    import os
    return os.path.exists(f)

输出

[True,
 True,
 True,
 True,
 True,
 True,
 False,
 False,
 False,
 False,
 True,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 True,
 False,
 False,
 False]

有31个结果?一些True和一些False。我的群集在8个引擎(8个核心)上运行,所以我很困惑上面的结果意味着什么。使用多个内核读取csv的正确方法是什么?

(我使用负载平衡视图的原因是因为我尝试以通常的方式读取csv而我的CPU会跳到100%)

当然,文件确实存在,因为尝试在没有负载平衡视图的情况下读取它

pd.read_csv(f, nrows=5)

返回预期结果

ip_address channel_spend channels 0 100.0.0.131 1302.56 oo 1 100.0.0.144 55257.44 ooooooooooooooooooooooooooooooooooooo 2 100.0.0.92 1131.20 o 3 100.0.103.102 6059.20 oooo 4 100.0.103.111 6857.76 ooooooooo

谢谢。

0 个答案:

没有答案