我尝试从s3中读取大量csv文件,并在ec2实例上运行具有正确IAM角色(可以从其他脚本的相同存储桶读取)的工作人员。 当我试图从一个私人斗用这个命令读取我自己的数据:对ec2工作者的dask s3访问
client = Client('scheduler-on-ec2')
df = read_csv('s3://xyz/*csv.gz',
compression='gzip',
blocksize=None,
#storage_options={'key': '', 'secret': ''}
)
df.size.compute()
数据是看起来像读取本地(本地Python解释器,而不是工人),然后被发送到工人(或调度? ),当工作人员收到组块时,他们运行计算并返回结果。通过或不通过密钥和秘密storage_options
。
当我从公共s3桶(NYC出租车数据)读取,与storage_options={'anon': True}
,一切看起来没问题。
您认为问题是什么?我应该重新配置更改以让工作人员直接从s3中读取?
s3fs正确安装,而这些都是根据DASK支持的文件系统:
>>>> dask.bytes.core._filesystems
{'file': dask.bytes.local.LocalFileSystem,
's3': dask.bytes.s3.DaskS3FileSystem}
更新
监控网络接口后,它看上去就像是从解释上传到调度。数据帧(或包)中的分区越多,数据发送到调度程序的数据就越大。我认为这可能是计算图,但它确实很大。对于12个文件,它是2-3MB,对于30个文件,它是20MB,对于更大的数据(150个文件),将它发送到调度程序只需要很长的时间,我没有等待它。发送给调度器的还有哪些内容可以占用这些数据量?
>还有什么被发送到调度程序,可以占用这些数据量?据我所知, 。没有。如果你可以生成一个可重现的[最小失败示例](http://stackoverflow.com/help/mcve),我建议在Github上提交一些东西。当我尝试这个问题时,一切运行良好。你可以尝试[手动检查dask图表](http://dask.pydata.org/en/latest/inspect.html)。 – MRocklin