更新时间:2022-07-19 GMT+08:00

Spark应用开发简介

Spark简介

Spark是分布式批处理框架,提供分析挖掘与迭代式内存计算能力,支持多种语言(Scala/Java/Python)的应用开发。 适用以下场景:

  • 数据处理(Data Processing):可以用来快速处理数据,兼具容错性和可扩展性。
  • 迭代计算(Iterative Computation):支持迭代计算,有效应对多步的数据处理逻辑。
  • 数据挖掘(Data Mining):在海量数据基础上进行复杂的挖掘分析,可支持各种数据挖掘和机器学习算法。
  • 流式处理(Streaming Processing):支持秒级延迟的流式处理,可支持多种外部数据源。
  • 查询分析(Query Analysis):支持标准SQL查询分析,同时提供DSL(DataFrame), 并支持多种外部输入。
  • Apache Spark部件架构如图1所示。本文档重点介绍Spark、Spark SQL和Spark Streaming应用开发指导。MLlib和GraghX的详细指导请参见Spark官方网站:http://spark.apache.org/docs/2.2.2/
图1 Spark架构

Spark开发接口简介

Spark支持使用Scala、Java和Python语言进行程序开发,由于Spark本身是由Scala语言开发出来的,且Scala语言具有简洁易懂的特性,推荐用户使用Scala语言进行Spark应用程序开发。

按不同的语言分,Spark的API接口如表1所示。

表1 Spark API接口

接口

说明

Scala API

提供Scala语言的API。由于Scala语言的简洁易懂,推荐用户使用Scala接口进行程序开发。

Java API

提供Java语言的API。

Python API

提供Python语言的API。

按不同的模块分,Spark Core和Spark Streaming使用上表中的API接口进行程序开发。而SparkSQL模块,支持CLI或者ThriftServer两种方式访问。其中ThriftServer的连接方式也有Beeline和JDBC客户端代码两种。

spark-sql脚本、spark-shell脚本和spark-submit脚本(运行的应用中带SQL操作),不支持使用proxy user参数去提交任务。