spark pyspark 相关介绍

Apache Spark是一个快速且通用的集群计算系统。它提供高级别的Java, Scala, Python 和 R接口。支持流处理(Spark Streaming),图计算(GraphX),SQL查询(Spark SQL)并提供机器学习库(MLlib)。

Spark提供了丰富的功能,容易学习和使用,并且成熟稳定。

Spark的各个组件如图1-1所示:

%e5%b1%8f%e5%b9%95%e5%bf%ab%e7%85%a7-2016-09-19-%e4%b8%8b%e5%8d%8811-38-34

 

Spark Core

Spark Core实现了Spark的基本功能,包含任务调度、内存管理、错误恢复、与存储系统交互等模块。Spark Core中还包含了对弹性分布式数据集(resilient distributed dataset, 简称RDD)的API定义。RDD表示分布在多个计算节点上可以并行操作的元素集合,是Spark主要的编程抽象。Spark Core 提供了创建和操作这些集合的多个 API

Spark的存储层次

Spark不仅可以将任何Hadoop分布式文件系统(HDFS)上的文件读取为分布式数据集,也可以支持其他支持Hadoop接口的系统,比如本地文件、亚马逊S3,Cassanda、Hive、HBase等。我们需要弄清楚的是,Hadoop并非Spark的必要条件,Spark支持任何实现了Hadoop接口的存储系统。Spark支持的Hadoop输入格式包括文本文件,SequenceFile、Avro、Parquet等。

 

Spark下载及mac安装(需java支持)

进入 http://spark.apache.org/downloads.html 选择第四项下载得到“spark-2.0.0-bin-hadoop2.7.tgz” 文件,将其解压,得到“spark-2.0.0-bin-hadoop2.7” 文件夹, 将此文件夹存入某系统位置(path)。

在终端输入以下命令,open .bash_profile  打开环境变量配置文件。

添加:

保存,并关闭,然后在终端输入 以下命令,使更改生效:

这样就安装完成了,在终端输入“pyspark” 即可进入PySpark shell操作, 安装成功即会出现如下提示。

 

因为配置了环境变量,在虚拟环境中也可直接输入“pyspark”使用。

另可输入如下命令,在ipython中使用PySpark shell:

在ipython notebook中使用PySpark shell如下:

如果需要使脚本基于spark执行,可输入:

 

RDD、驱动器程序、sc变量

在Spark中,我们通过对分布式数据集的操作来表达我们的计算意图,这些计算会自动地在集群上并行进行。这样的数据集被称为 弹性分布式数据集(Resilient Distributed Datasets)简称RDD。RDD是Spark对分布式数据集和计算的基本抽象。

在终端输入“pyspark”进入pyspark shell 后输入如下命令:

每个Spark应用都由一个驱动器程序(driver program)来发起集群上的各种并行操作。驱动器程序包含应用的main函数,并且定义了集群上的分布式数据集,还对这些分布式数据集应用了相关操作。在上面的例子中,世纪的驱动器程序就是Spark shell本身,你只需要输入想要运行的操作就可以了。

驱动器程序通过一个SparkContext对象来访问Spark。这个对象代表对计算集群的一个连接。shell启动时已经自动创建了一个SparkContext对象,是一个叫做sc的变量。可以在shell中直接输入“sc”来查看它的类型。一旦有了SparkContext,就可以用它来创建RDD.

Spark编程的核心概念:通过一个驱动器程序创建一个SparkContext和一系列RDD,然后进行并行操作。

接下来介绍如何操作RDD。

 

RDD操作

RDD其实就是分布式的元素集合。在Spark中,对数据的多有操作不外乎创建RDD、转化已有RDD以及调用RDD操作进行求值。而在这一切背后,Spark会自动将RDD中的数据分发到集群上,并将操作并行化执行。

RDD支持两种类型的操作:转化操作(transformation)和行动操作(action)。转换操作会由一个RDD生成一个新的RDD。比如filter()操作:

行动操作会对RDD计算出一个结果,并把结果返回到驱动器程序中,或把结果存储到外部存储系统(如HDFS)中,上面的first()操作就是一个行动操作。

转化操作和行动操作的区别在于Spark计算RDD的方式不同。虽然你可以在任何时候定义新的RDD,但Spark只会惰性计算这些RDD。他们只有第一次在一个行动操作中用到时,才会真正计算。

 

Notes:

HDFS: Hadoop Distributed File System: Hadoop分布式文件系统

ODBC: 开放数据库连接(Open Database Connectivity)

JDBC:(Java Data Base Connectivity,java数据库连接)

 

References:

《Spark快速大数据分析》 Holden Karau, Andy Konwinski …

http://spark.apache.org/docs/latest/programming-guide.html

 

暂无评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注