Apache Spark 简介(下)

ist718-week4

Posted by renjie on February 15, 2020


Apache Spark 2.0简介

和1.6主要区别就是以data frames取代了rdds。


创建dataframes

1.From Row objects:

2.From RDDs:

3.From files:

dataframes的几点特点

  • 在一个column里的所有data的类型应相同
  • dataframe 类型可以有等级化:一个column的类型可以是另外一个dataframe
  • 不能通过python直接对dataframes进行操作, 而需要通过spark命令(类sql)来进行select,modify,filter,join,group 或者aggregate
  • 操作很多为symbolic的
  • 在转换之后, Spark 根据column的类型选择最优化的执行方案

代码示例

1.1 select

1.2 改变column名字

1.3 改变column类型

2 结合select 和 modify

3 结合select 和 modify 并使用 sql utility function(fn)

需要使用fn.lit(2)传入fn函数需要的参数

4 Filtering

5 Joining

下面是具体展示(其实和sql是一样的):

首先是两个数据集

5.1 Inner Join

5.2 Left outer Join

5.3 Right outer Join

5.4 Outer join

6 Grouping

7 Aggregate


Spark ML

包含多种算法,基于dataframes操作,数据预处理可以通过pipeline

Estimator工作流程

Spark ML需要基于dataframes而不是rdds来生成transformer和estimators

Pipelines

Evaluators Evaluators用来从一组模型中选出一个最好的(通过比较prediction给出score)


Spark总结

  • Apache Spark 是快速,in-memory 计算系统。 runs on Hadoop
  • Apache Spark 由driver program, worker nodes, executors and tasks组成
  • SparkContext是driver program的核心object
  • RDDs是容错率高的可以被平行操作的元素集合。有多种创建方式:parallelize function / textFile sequenceFile
  • RDDs有两大类型的操作:transformationsactions.

  • MLlib是Spark机器学习的实现包 : 包括classification, regression, clustering and recommendation.
    • Transformers 处理raw数据
    • Estimators need to learn something from the data in order to transform the data
    • Pipelines 是Transformers 和 Estimators的打包集合

我理解的sparkhadoop的区别和联系就是:

Hadoop实质上更多是一个分布式数据基础设施: 它将巨大的数据集分派到一个由普通计算机组成的集群中的多个节点进行存储,意味着不需要购买和维护昂贵的服务器硬件

spark是对那些分布式存储的大数据进行处理的工具,具有强大的数据处理能力,但不具备储存能力,一般结合hadoop系统替代操作较慢的mapreduce,也可以和其他的分布式文件系统进行集成运作。

spark 主要特点就是lazy executionin-memory

上下两文仅仅是对于718课上知识的一个小总结,还有很多进一步内容值得学习。