过去,对于需要大量处理负载的工作,我会使用 Scala 和并行集合。
我目前正在尝试 Spark,发现它很有趣,但学习曲线很陡。我发现开发速度较慢,因为必须使用简化的 Scala API。
在决定是否使用 Spark 之前我需要确定什么?
我正在尝试实现的当前 Spark 作业正在处理大约 5GB 的数据。该数据并不大,但我正在运行该数据的笛卡尔积,这会生成超过 50GB 的数据。但也许使用 Scala 并行集合会同样快,我知道从我的角度来看,实现该作业的开发时间会更快。
那么在决定使用 Spark 之前我应该考虑哪些因素?
最佳答案
与传统高性能计算框架(例如 MPI)相比,Spark 的主要优势是容错、轻松集成到 Hadoop 堆栈中以及非常活跃的邮件列表 http://mail-archives.apache.org/mod_mbox/spark-user/ 。让分布式容错内存计算高效工作并不容易,而且我绝对不想自己实现。原始论文中回顾了解决该问题的其他方法:https://www.usenix.org/system/files/conference/nsdi12/nsdi12-final138.pdf .
但是,当我的工作受 I/O 限制时,我仍然倾向于主要依赖 Pig 脚本,因为 Pig 更成熟,我认为脚本更容易编写。当 pig 脚本无法解决问题时(例如迭代算法、图表、大量连接),Spark 就表现出色。
现在,如果你只有 50g 数据,你可能不关心分布式容错计算(如果你所有的东西都在一个节点上,那么世界上没有任何框架可以帮助你避免节点故障:))因此并行集合可以正常工作。
关于scala - 决定是否使用 Apache Spark 时应考虑哪些因素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23794008/