You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

本地Jupyter连接远程Dask集群如何读取远程机器存储的CSV文件?

问题原因

你遇到的报错本质是dd.read_csv会优先在本地(你运行Jupyter的机器)执行路径扫描、采样推断元数据的前置逻辑,而你的本地机器没有对应路径的文件,路径扫描返回空列表,才触发了取paths[0]的索引错误,并不是worker节点找不到文件的问题。

可行解决方案

方案1:用delayed包装读取逻辑(最便捷)

直接把pandas读文件的逻辑包装成延迟任务,提交到远程worker执行,再转成Dask DataFrame,本地不需要访问远程文件:

import dask.dataframe as dd
from dask.distributed import Client, delayed
import pandas as pd

client = Client('remote-ip:8786')

@delayed
def remote_read(path):
    return pd.read_csv(
        path,
        header=None,
        dtype=object
    )

# 单文件写法
ddf = dd.from_delayed(remote_read('/absolute/path/to/remote-machine-file.csv'))

# 多文件的话可以批量生成delayed对象再传入
# delayed_list = [remote_read(f'file_{i}.csv') for i in range(10)]
# ddf = dd.from_delayed(delayed_list)

注意:文件路径要写远程机器上的绝对路径,避免相对路径找不到

方案2:本地挂载远程目录

用sshfs把远程机器存文件的目录挂载到本地完全相同的路径下,这样本地的路径扫描逻辑能读到文件元数据,worker也能正常读取远程本地的文件。

方案3:走SSH协议直接读远程文件

你也可以直接给dd.read_csv传SSH格式的路径,让Dask通过SSH协议直接读取远程文件,不需要单独挂载:

ddf = dd.read_csv(
    'ssh://<远程用户名>@<remote-ip>//<远程文件绝对路径>',
    header=None,
    assume_missing=True,
    dtype=object,
    storage_options={
        "key_filename": "/本地/ssh/私钥/路径",
        # 如果用密码认证就传 "password": "你的密码",不推荐明文写密码
    }
)

内容的提问来源于stack exchange,提问作者Mrityunjay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 03:09:02