scala - 决定是否使用 Apache Spark 时应考虑哪些因素?

标签 scala apache-spark

过去,对于需要大量处理负载的工作,我会使用 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/

相关文章:

hadoop - 如何从 pyspark rdd 或分区确定原始 s3 输入文件名

java - 如何从 Java 中的 TrainValidationSplitModel 中提取最佳参数集?

apache-spark - 如何知道 PySpark 应用程序的部署模式?

hadoop - 通过Ambari安装Spark

apache-spark - Spark 输出文件 : Cut down no.

scala - 为什么 Scala 子类在使用主构造函数继承时会创建字段的副本?

scala - for之后如何避免平面图

scala - json4s - 如何使用多个 FieldSerializer

scala - 从 Kafka 进行流聚合时在 "deadlock"中运行

scala - 我在 Scala 列表中添加了一个函数,现在如何删除它?