我使用MapReduce来创建一个(相对)大的数据集,这是一个以.csv格式(~250MB)存储的简单矩阵。我在一个有2台计算机的自制集群中运行这个MapReduce。
集群运行良好,没有任何问题。
一如既往,我从csv文件创建数据存储
ds=datastore({'DS.csv'},'ReadVariableNames',false);
我打开池并设置MapReduce环境
myCluster=parpool('HomeCluster');
MRE=mapreducer(myCluster);
我启动程序,出现以下错误:
Error using matlab.io.datastore.TabularTextDatastore/partition (line 44)
Cannot find files or folders matching: '<path for CSV>'
奇怪的是…csv文件在当前文件夹中,其中还包含我的脚本/函数。
我还试着把那个文件附加到池中(即使听起来很愚蠢,如果我错了,请纠正我),但仍然没有成功。
感谢您的帮助。谢谢
更新:我能够运行此程序,方法是在两台计算机上创建一个名称相同、路径相同的文件夹,并在两个文件夹中复制csv文件。但这相当愚蠢,即使是因为大多数时候都不可能创建一个完全匹配的路径名(例如,操作系统中的用户名可能不同)。有什么更聪明的方法可以避免这种情况吗?主节点是否可以是唯一一个包含数据集文件的节点?
我实际上是如何解决的:将这些文件附加到池中没有成功,所以我不得不通过网络共享一个外部硬盘驱动器,以便将这些文件放在同一路径/文件夹中。