Spark简介

1. 简介

    Apache Spark是自由开源的分布式内存计算平台,目前已经成为 Apache 基金会的顶级项目。该平台可以快速、多计算范式、可靠地处理海量数据,除了基本批处理型外,还支持流计算、图计算、SQL分析和机器学习。 

1.1 Spark生态系统(BDAS生态系统)

Spark简介_第1张图片

Mesos:类似于YARN的功能

1.2 Spark计算模型

数据处理流水线:
  - 输入与构造RDD (Resilient Distributed Datasets:弹性分布式数据集)

  - 转换Transformation

  - 输出Action


程序示例:

val file = sc.textFile("hdfs://xxx")
val errors = file.filter(line=>line.contains("ERROR"))
errors.count()

1.3 Spark语言的数据结构和基础函数

1.3.1 弹性分布式数据集RDD 

    相当于分布式数组,即Spark语言的数据结构
    属性:
      1) partition (A list of partitions)
      2) compute (A function for computing each split)
      3) dependencies (A list of dependencies on other RDDs)
      4) partitioner
      5) preferredLocations (Optionally, a list of perferred locations to compute each split on (e.g. block locations for an HDFS file)

1.3.2 在RDD上操作的基础函数

1.3.2.1 转换(Transformations)

      Transformations操作是延迟计算的

      (1) map(func):对调用map的RDD数据集中的每个element都使用func, 然后返回一个新的RDD,这个返回的数据集是分布式的数据集

      (2) filter(func):对调用filter的RDD数据集中的每个元素都使用func,然后返回一个包含使用func为true的元素构成的RDD
      (3) reduceByKey(func, [numTasks]):就是用一个给定的reduce func再作用在groupByKey产生的(K,Seq[V]), 如求和、求平均数
       

1.3.2.2 行动(Actions)

      Actions算子会触发Spark提交作业(Job),并将数据输出Spark系统

      (1) reduce(func):就是执行聚集,但是传入的函数是两个参数输入,一个返回值,这个函数必须满足交换律和结合律
      (2) collect():一般在filter产生足够小的结果时,再用collect封装返回一个数组
      (3) count():返回的是dataset中的element的个数
      (4) first():返回的是dataset中的第一个元素
      (5) take(n):返回前n个elements,这个是driver program返回的







你可能感兴趣的:(Spark简介)