原创

spark的介绍和pyspark的使用

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/dxyna/article/details/79772343

从这个名字pyspark就可以看出来,它是由python和spark组合使用的.

相信你此时已经电脑上已经装载了hadoop,spark,python3.

那么我们现在开始对pyspark进行了解一番(当然如果你不想了解直接往下翻找pyspark的使用):

1. 背景:

    产生与加州大学伯克利分校AMP实验室,2013年6月称为Apache成为孵化项目,使用Scala语言进行实现的,而Scala建立在JAVA之上,

    为什么要设计这么一个东西?

    为了改善Hadoop的MAP REDUCE的弱点:

          1. 交互式和迭代式

          2. 在集群多点内存中运行的分布式计算

          3. 容错数据集合

    为什么要用SPARK?

          1. 先进的大数据分布式编程和计算框架

          2. 视图替代Hadoop(Spark可以独立与Hadoop,但是他不能替代Hadoop,因为Hadoop现在依然很重要)

          3. 内存分布式计算:运行数度快

          4. 可以使用不同的语言编程(java,scala,r 和python)

          5. 可以从不同的数据源获取数据

            可以从HDFS,Cassandea,HBase等等

            同时可以支持很多的文件格式:text Seq AVRO Parquet

          6. 实现不同的大数据功能:Spark Core,Sparc SQL等等

2. 主要部件

    1.spark core :包含spark的主要基本功能,所有和Rdd有关的API都出自于spark core

    2.spark sql :spark中用于结构话处理的软件包,用户可以在soark环境下使用sql语言处理数据

    等等(其他先不介绍)

3. 介绍一下spark core

    1.它是spark生态圈的核心:

        负责读取数据

        完成分布式计算

    2.包含俩个重要部件

        有向无环图(DAG)的分布式并行计算框架

        容错分布式数据RDD(Resilient Distributed Dataset)

    3.总体来说就是spark功能调度管理中心,用来定义和管理RDD,RDD代表了一系列数据集合分布在基质的内存中,spark core 的任务就是对这些数据进行分布式计算

4.RDD(重点):

    弹性分布式数据集分布在不同的集群节点的内存中,可以理解为一大数组,数组的每一个元素就是RDD的一个分区,一个RDD可以分布并被运算在多态计算机节点的内存以及硬盘中,

    RDD数据块可以放在磁盘上也可以放在内存中(取决于你的设置),如果出现缓冲失效或丢失,RDD分区可以重新计算刷新,RDD是不能被修改的但是可以通过API被变换生成新的RDD.

    有俩类对RDD的操作(也成算子):

        1.变换(懒执行): 有 map flatMap groupByKey reduceByKey 等

            他们只是将一些指令集而不会马上执行,需要有操作的时候才会真正计算出结果

        2.操作(立即执行): 有 count take collect 等

            他们会返回结果,或者把RDD数据输出

        这些操作实现了MapReduce的基本函数map,reduce及计算模型,还提供了filter,join,groupBYKey等,另外spark sql 可以用来操作有数据结构的RDD即SPARK DATA FRAME

    它的运行原理和mapreduce是一样的,只是他们的运行方式不同,mr的运算是内存磁盘交互读写,不能在内存中共享数据,而RDD可以被共享和持久化.因为大数据运算经常是交互式和迭代式的,所以数据的重用性很重要,而mr的磁盘交互读写带来的I/O开销导致数度减慢