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/。
Spark开发接口简介
Spark支持使用Scala、Java和Python语言进行程序开发,由于Spark本身是由Scala语言开发出来的,且Scala语言具有简洁易懂的特性,推荐用户使用Scala语言进行Spark应用程序开发。
按不同的语言分,Spark的API接口如表1所示。
接口 |
说明 |
---|---|
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参数去提交任务。