Amazon s3上的dask read_csv超时,包含大文件

2024-09-26 18:07:39 发布

您现在位置:Python中文网/ 问答频道 /正文

对于大文件,s3上的dask read_csv超时

s3fs.S3FileSystem.read_timeout = 5184000  # one day
s3fs.S3FileSystem.connect_timeout = 5184000  # one day

client = Client('a_remote_scheduler_ip_here:8786')

df = dd.read_csv('s3://dask-data/nyc-taxi/2015/*.csv')
len(df)

len(df)有超时异常,如果文件很小,则它工作正常。在

我认为我们需要一种方法来设置远程工作者上的s3fs.S3FileSystem.read_timeout,而不是本地代码,但我不知道怎么做。在

以下是堆栈跟踪的一部分:

File "/opt/conda/lib/python3.6/site-packages/dask/bytes/utils.py", line 238, in read_block File "/opt/conda/lib/python3.6/site-packages/s3fs/core.py", line 1333, in read File "/opt/conda/lib/python3.6/site-packages/s3fs/core.py", line 1303, in _fetch File "/opt/conda/lib/python3.6/site-packages/s3fs/core.py", line 1520, in _fetch_range File "/opt/conda/lib/python3.6/site-packages/botocore/response.py", line 81, in read botocore.exceptions.ReadTimeoutError: Read timeout on endpoint URL: "None"


Tags: csvinpyreadlibpackageslinetimeout
1条回答
网友
1楼 · 发布于 2024-09-26 18:07:39

使用class属性设置超时似乎是一件合理的事情,但是您使用的是一个客户端与其他进程/计算机中的工作人员进行对话。因此,您需要在每个worker上的类副本上设置属性,以使您的方法生效。在

也许,更好的方法是将read_csv(默认为64MB)使用的块大小设置为较小的数字。我假设你在一个较慢的网络上,这就是为什么你得到超时。如果您需要小于5MB的数字(s3fs中的默认预读大小),那么您还应该在传递给storage_optionsstorage_options之间传递default_block_size

最后请注意,s3fs和dask都允许在连接错误或一般任务错误时重试。这可能足以帮助你,如果你只得到这个偶尔的滞后准备。在

相关问题 更多 >

    热门问题