从read_sql_table&问题中持久存储dask数据帧了解dask distributed Client.get_future_errors输出

时间:2018-01-08 21:02:00

标签: dask dask-distributed

使用dask-ec2脚本设置集群后,我尝试将sql表作为dask数据帧读取。我的查询如下:

import dask.dataframe as dd
from dask.distributed import Client, progress
c = Client('127.0.0.1:8786')

df = dd.read_sql_table(sql_table_name, uri, index_col=column_1,  
columns=[column_2, column_3, column_4], npartitions=393, parse_dates=
[date_column_1, date_column_2])

其中sql_table_name和uri是特定于我的数据库的字符串。然后我尝试使用dask.distributed客户端持久化df:

df = c.persist(df)
progress(df)

进度条显示0.6秒的异常。我使用c.get_futures_error(df)来尝试理解为什么并返回类似的东西:

(<function distributed.worker.execute_task>,
  ((<function dask.compatibility.apply>,
   <function pandas.io.sql.read_sql>,
   [<sqlalchemy.sql.selectable.Select at 0x7fd5e3b0a4e0; Select object>,
*the uri I used*],
   (dict,
[['parse_dates',
  [date_column_1, date_column_2]],
 ['index_col', column_1]])),),
{},
[])

对于为什么我可能会收到这些期货错误以及我可以采取哪些措施来减轻它们,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

我相信您正在寻找configurator-ng

>>> future = c.submit(div, 1, 0)         
>>> future.status                        
'error'
>>> c.recreate_error_locally(future)     
ZeroDivisionError: division by zero