在Dask分发的documentation中,他们具有以下信息:
例如,Dask开发人员使用此功能来建立数据局部性 当我们与本地数据存储系统(如Hadoop File)进行通信时 系统。当用户使用诸如 dask.dataframe.read_csv('hdfs:///path/to/files.*.csv')Dask与 HDFS名称节点,找到所有数据块的位置, 并将该信息发送到调度程序,以便它可以使 更明智的决策并缩短用户的加载时间。
但是,似乎get_block_locations()
已从HDFS fs后端中删除,所以我的问题是:Dask关于HDFS的当前状态是什么?是否将计算发送到本地数据节点?是否在优化调度程序时考虑了HDFS上的数据局部性?
答案 0 :(得分:2)
相当正确的是,由于箭头的HDFS接口的外观(现在优于hdfs3),对块位置的考虑不再是访问HDFS的工作负载的一部分,因为箭头的实现不包括get_block_locations()方法。
但是,我们已经想要删除使这项工作变得有些复杂的代码,因为我们发现测试HDFS部署上的节点间带宽完全可以满足大多数工作负载的实际需求。块的大小与您希望在内存中划分的分区的大小之间的额外限制增加了一层复杂性。
通过删除专门的代码,我们可以避免HDFS出现的特殊情况,而不是外部云存储(s3,gcs,azure),在这里无关紧要的是哪个工作人员访问了数据的哪一部分。
简而言之,是的,应该更新文档。