我编写了一个python代码sum.py,用于总结目录data中每个csv文件的所有数字。现在,我将使用Amazon (AWS)上的(AWS)来并行处理每个csv文件的求和过程。我已经采取了以下步骤:
$ scp -r -i my-key-pair.pem my_dir root@host_name将目录my_dir上传到AWS集群主节点。文件夹my_dir包含两个子目录:code和data,其中code包含python代码sum.py,data包含所有csv文件。$ ./spark/copy-dir /my_dir/code/将包含sum.py的代码目录code发送到所有从节点。data将包含所有csv文件的目录放到HDFS中。现在,当我在AWS主节点:$ ./spark-submit ~/my_dir/code/sum.py上提交我的应用程序时,它会显示一个错误,即工作节点找不到csv文件。但是,在我使用命令data将数据目录copy-dir发送到所有从节点之后,一切都很完美。
所以我对这个问题很困惑。据我所知,主节点上的驱动程序加载csv文件,创建RDD并向每个从节点发送单独的任务和RDD。这意味着从节点不需要知道原始csv文件,因为它们只是从主节点接收RDD。如果是这样的话,为什么我要将所有csv文件发送到每个从节点?另外,如果我将所有csv文件发送到从节点,那么将使用从节点上的大量外部磁盘存储。这是否意味着Apache是一个非常昂贵的并行计算工具?如果有人能在这两个问题上帮我,我真的很感激。
https://stackoverflow.com/questions/31549433
复制相似问题