大数据之Spark
背景:
由于MapReduce框架仅支持map和reduce两种操作,且迭代计算效率低,不适合交互式处理(数据挖掘),流式处理,不支持函数式编程语言(scala)。之前各种技术框架如,批处理的:HIVE,PIG,Mapreduce。流计算的storm,交互式计算的Impala,而spark是在此基础上的集大成者!统一了框架!
特点:
- 高效:基于内存的计算框架,比Mapreduce快10-100倍。
- 易用:支持python,scala,java三种语言,代码量比mapreduce少2-5倍,有丰富的API。
- 容错:与hadoop,yarn集成,支持读写HDFS/HBASE。
RDD
Resilient Distributed Datasets,弹性分布式数据集。是Rspark核心概念,分布在集群中只读对象集合,可以存储在内存或者硬盘中。可以通过并行转换操作构造,失效后自动重构。
RDD基本操作(operation):
- Transformation(转换):通过scala或者hadoop数据集构造新的RDD,通过已有的RDD产生新RDD。
- Action(行动):操作在RDD上的一些列计算。
惰性执行机制
一段spark代码不会执行,直到遇到第一个action。