从客户端将单个大文件加载到敏捷工作者

时间:2018-07-24 13:12:05

标签: python dask dask-distributed

如何使dask的所有其他工作程序节点都可以访问8 GB的单个大文件?我已经尝试过<div id='main'> <div class='container'> <!--Image--> <div id='img-div'> <img id='image' src='https://www.projectarm.com/wp-content/uploads/2018/01/Frida-Kahlo-Vogue-1939-New-York-foto-di-Nickolas-Murray-2.jpg' /> <div id='img-caption'>This is a caption for the image</div> </img> </div> <!--Title--> <div id='pagetitle'> <h1 id='title'>Frida Kahlo</h1> <span id='tagline'>A short Tribute</span> </div> <!--End Title--> </div> <div id='tribute-info'> This is my main information about the person <a href='' id='tribute-link' target="_blank">This is a link for more information</a> </div>pd.read_csv()的{​​{1}},但是花费了很长时间。我正在macOS上运行它。

这是我的代码:

chunksize

坚持下去。预先感谢!

2 个答案:

答案 0 :(得分:0)

只要文件是.csv文件(未压缩),Dask就会对其进行分块,不确定是否要尝试自己对它进行分块。只要做:

将dask.dataframe导入为dd df = dd.read_csv('data * .csv')

答案 1 :(得分:0)

在工作流程中,您正在本地加载CSV数据,解析为数据帧,然后一次将这些数据帧的序列化版本传输给工作人员。

一些可能的解决方案:

  • 将文件复制到每个工作人员(这在空间方面是浪费的),或将其放置在所有人都能看到的位置,例如共享文件系统或云存储

  • 使用client.upload_file,这并不是真正为大型有效载荷而设计的,并且还会复制到每个工作人员中

  • 像以前一样使用dask.bytes.read_bytes来读取串行数据块,并将其保留给工作人员,这样至少您不会遭受序列化成本,并且解析工作在工作人员之间共享。 / p>