首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >火花RDD外部存储

火花RDD外部存储
EN

Stack Overflow用户
提问于 2015-07-21 20:54:45
回答 1查看 348关注 0票数 2

我编写了一个python代码sum.py,用于总结目录data中每个csv文件的所有数字。现在,我将使用Amazon (AWS)上的(AWS)来并行处理每个csv文件的求和过程。我已经采取了以下步骤:

  1. 我在AWS上创建了一个主节点和两个从节点。
  2. 我使用bash命令$ scp -r -i my-key-pair.pem my_dir root@host_name将目录my_dir上传到AWS集群主节点。文件夹my_dir包含两个子目录:codedata,其中code包含python代码sum.pydata包含所有csv文件。
  3. 我已经登录了我的AWS主节点,然后使用bash命令$ ./spark/copy-dir /my_dir/code/将包含sum.py的代码目录code发送到所有从节点。
  4. 在AWS主节点上,我还使用data将包含所有csv文件的目录放到HDFS中。

现在,当我在AWS主节点:$ ./spark-submit ~/my_dir/code/sum.py上提交我的应用程序时,它会显示一个错误,即工作节点找不到csv文件。但是,在我使用命令data将数据目录copy-dir发送到所有从节点之后,一切都很完美。

所以我对这个问题很困惑。据我所知,主节点上的驱动程序加载csv文件,创建RDD并向每个从节点发送单独的任务和RDD。这意味着从节点不需要知道原始csv文件,因为它们只是从主节点接收RDD。如果是这样的话,为什么我要将所有csv文件发送到每个从节点?另外,如果我将所有csv文件发送到从节点,那么将使用从节点上的大量外部磁盘存储。这是否意味着Apache是一个非常昂贵的并行计算工具?如果有人能在这两个问题上帮我,我真的很感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-22 09:04:02

是的,您必须使所有节点都可以使用数据。但是,每个节点都将尽力只加载它所关注的数据(其分区),并且您可以使用调整并行性的级别来最适合您的任务。除了在每个节点的文件系统上复制数据外,还有许多方法可以使所有节点都可以使用这些数据。考虑使用分布式文件系统(如HDFS ),或者将文件托管在每个节点(包括S3或文件服务器)的可访问位置。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31549433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档