大数据与Scala:从MapReduce到动态调用
1. 超越MapReduce
在大数据处理领域,实时处理事件的需求日益增长。然而,MapReduce仅适用于批处理作业,HDFS也只是最近才支持文件的增量更新,而且大多数Hadoop工具尚未支持这一特性。
这种趋势促使了新工具的诞生,例如Storm,它是一个集群式事件处理系统。此外,MapReduce还存在性能限制,如过多的磁盘I/O,以及编程API和底层模型使用困难等问题。
大多数第一代技术都有其局限性,最终会被替代。主要的Hadoop供应商最近采用了名为Spark的MapReduce替代方案。Spark支持批处理和流处理模式,用Scala编写,与MapReduce相比,性能更优,部分原因是它在处理步骤之间将数据缓存在内存中。更重要的是,Spark提供了像Scalding那样直观的API,简洁而富有表现力。
Scalding和Cascading使用管道隐喻,而Spark使用弹性分布式数据集(RDD),这是一种分布在集群上的内存数据结构。它具有弹性,如果某个节点出现故障,Spark知道如何从源数据中重建缺失的部分。
以下是一个用Spark实现的单词计数示例:
// src/main/scala/progscala2/bigdata/WordCountSpark.scalaX
package bigdata
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
object SparkWordCount {
de
超级会员免费看
订阅专栏 解锁全文

1508

被折叠的 条评论
为什么被折叠?



