Spark (Python版) 零基础学习笔记(四)—— Spark概览

结合了《Learning Spark: Lightning-Fast Big Data Analysis》和官方2.02版本的Spark Document总结了关于Spark概念性的一些知识。帮助大家对Spark有一个总体上的认知

一、Spark的两个核心概念:

1、RDD:弹性分布式数据集
2、 Shared variables:共享变量

二、Spark组件:

Spark集成了很多组件。Spark的内核是一个计算引擎,用于夸多个worker machines或计算集群调度,分布和监视由很与计算任务组成的应用程序。

Spark紧密集成的优点:
1. 高层组件能够受益于底层的改进。比如Spark内核优化后,它的SQL和ML库也能提升速度。
2. 花费较少。包括部署、维修、测试、支持等的费用。一旦有新的组件加入到Spark栈中,所有使用Spark的机构都能够立即使用这一新的组件。
3. Spark建立的应用能够无缝组合其他的处理模型。比如,你用Spark写一个利用ML算法,不断数据流中接收数据,对数据进行实时分类的程序。与此同时,分析师能够通过SQL对同样的数据进行实时的查询操作。此外,数据工程师和数据科学家能够通过Python Shell获取同样的书进行不同的分析。

Spark组件介绍:
1. Spark Core:包括Spark的基础功能,比如任务调度组件、内存管理、故障恢复、存储系统交互等。也是定义RDD(Spark最重要的编程概念)的API的所在地。
2. Spark SQL (structured data):处理结构化数据的Spark包,利用SQL可以或者Hive进行数据查询操作。它也支持很多数据源,包括Hive表格,Parquet和JSON。Spark SQL除了给Spark提供了一个SQL接口外,还循序开发者将SQL查询和RDD支持的可编程数据操作混合使用,从而进行更加复杂的分析。
3. Spark Streaming (real-time):是一个能够处理实时数据流的Spark组件。数据流包括生产Web服务器产生的日志文件、web服务的用户发布的状态更新的信息。Spark Streaming提供了一个操作数据流的API,它与RDD API十分接近。API的底层设计能够提供与Spark Core同等程度的容错、吞吐量和扩展支持。
4. Mlib (machine learning):提供了多种机器学习算法,包括分类、回归、聚类、协同过滤、模型评价和数据导入等等。也提供了ML的一些底层的处理,比如通用梯度下降优化算法。这些算法都能够夸集群扩展。
5. GraphX (processing):用于处理图像(比如社交网络的朋友关系图)和进行图形并行计算的库。与Spark Streaming和Spark SQL类似,GraphX也是Spark RDD API的扩展,允许我们创建一个有向图,并给每个节点和边任意设定属性。GraphX也提供了丰富的图像处理算子(例如subgraph和mapVertices)和常见的图像算法库(例如PageRank和triangle counting)。

Spark能够在很多集群管理器上运行,包括Hadoop YARN,Apache Mesos,和简单的集群管理器,包括Spark自己的Standalone Scheduler。

Core Spark概念
每个Spark应用都含有一个驱动程序,它将并行操作投放到集群上。该驱动程序包括Spark应用的main主函数,在集群上定义分布式数据集,并将其上实施各种操作。Spark shell本身就是一个驱动程序,因此我们能够在shell中直接实施各种操作。如下图所示。
这里写图片描述

三、初始化Spark

编写Spark程序首先要做的一件事是创建一个SparkContext对象,这个对象是告诉Spark如何访问一个集群的。在创建SparkContext之前,需要先创建一个SparkConf对象,它包含了spark应用的信息。
conf = SparkConf().setAppName(appName).setMaster(master)
sc = SparkContext(conf=conf)
其中,
appName: 应用的名字,会在集群的UI上显示
master:是一个Spark或者Mesos或者YARN集群的URL,也可以是一个指示本地地址的string。
实际应用中,当在一个集群上运行程序时,我们一般并不愿意在程序中将master写死,而是希望通过spark-submit将应用程序启动的时候传递它。但在本地测试过程中可以使用local测试Spark。

3.1. 使用Shell
在Pyspark shell中,已经存在一个专有的解释器可识别的SparkContext,叫做sc。如果再创建自己的SparkContext就无法工作。可以利用–matser命令设置Spark将要连接的集群。可用利用–py-files语句将Python的.zip,.egg或.py文件添加到runtime path,如果有多个文件,用逗号隔开。也可以通过在–packages语句和maven在shell会话中添加依赖(例如SparkPackages)。任何附加的可能存在依赖的代码库(例如SonaType)都可以用过–repositories语句添加。任何Spark Packages中存在的Python以来都必须通过pip命令手动安装。下面举几个例子,在4个核上运行bin/pyspark:
./bin/pysparkmasterlocal[4]

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值