spark的介绍和pyspark的使用

从这个名字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开销导致数度减慢



废话这么多了开始表演了!!


首先我们需要启动hadoop和spark

接下来在命令行输入:

jupyter-notebook --ip 192.168.50.129

--ip 后面跟的是你此时的ip,这样我们就会得到一个网址:

接下来我们复制它在浏览器上打开,就会进入jupyter的页面,我们通过点击new,python3来创建一个文件

首先我们需要导入py4j:

    其实就是在python3里面导入了spark和sc模块


要注意了:下图红框里面的要对应你spark/python/lib里面的文件

import os
import sys
spark_name = os.environ.get('SPARK_HOME',None)
if not spark_name:
    raise ValueErrorError('spark环境没有配置好')
sys.path.insert(0,os.path.join(spark_name,'python'))
sys.path.insert(0,os.path.join(spark_name,'python/lib/py4j-0.10.4-src.zip'))
exec(open(os.path.join(spark_name,'python/pyspark/shell.py')).read())

现在我们就可以使用pyspark了:



    请注意,spark在交互式shell下运行时候,这里的sc即SparkContext 的一个实例已经自动生成了,这是因为pyspark shell本身就是spark应用的driver程序,而driver程序包含应用的main函数定义RDD并在计算机集群上进行各种操作,所以一旦获得SparkContext object 即sc ,driver就可以访问spark了,因此sc可以看成是driver对计算机集群的连接.

    spark里面的core里面的RDD有俩个组织,一个为driver另一个为worker,有点像hadoop里面的namenode和datanode,所以driver只能有一个而worker可以为多个.driver负责获取数据,管理worker,所以worker就负责工作.

 

有俩种类型的RDD:

       1. 并行集合:来自与分布式化的数据对象,比如我们上面的代码,python里面的list对象,再比如用户自己键入的数据

        并行化RDD就是通过调用sc的parallelize方法,在一个已经存在的数据集合上创建的(一个Seq对象),集合的对象将会被拷贝,创建出一个可以被并行操作的分布式数据集,比如上面的代码,演示了如何python中的list创建一个并行集合,并进行分行

       2. 文件系统数据集读取数据

        spark可以将任何hadoop所支持的存储资源转换称RDD,如本地文件(语言网络文件系统),索引的节点都必须能访问到,HDFS,mongodb,HBase,等

下面我们开始使用文件系统集读取数据,首先在hello里面上传一个文件,比如:


开始写代码:

lines = sc.textFile("hdfs://python2:9000/hello/data.csv")

既然我们已经获取了数据那就开始操作:

1.map()

    他的参数是一个函数(支持lambda函数),函数应用于RDD的每一个元素,函数的参数只能有一个,返回值是一个新的RDD

2.flatMap()

    参数是一个函数,函数应用为RDD的每一个元素,参数只有1个,将数据进行拆分,变成迭代器,返回值是一个新的RDD  


如上图,可以进一步的将数据拆分出来,也可以进行添加一些别的操作,比如:


3.filter()

    参数是一个函数,与python里面的filter一样,函数会过滤掉不符号和条件的元素,返回值是一个新的RDD

4.reduce()

    并行汇总所有RDD元素,参数是一个函数,函数的参数有2个




5.countByValue()

    各RDD元素在RDD中出现的次数


也可以像reduceByKey()变换每一组内汇总


6.reduceByKey()

    在每一键组内汇总变换,查看每一个数据在文件里面出现的次数


7.sortByKey()

    未完待续...

附链接:

    spark RDD的使用



About This Book, Learn why and how you can efficiently use Python to process data and build machine learning models in Apache Spark 2.0Develop and deploy efficient, scalable real-time Spark solutionsTake your understanding of using Spark with Python to the next level with this jump start guide, Who This Book Is For, If you are a Python developer who wants to learn about the Apache Spark 2.0 ecosystem, this book is for you. A firm understanding of Python is expected to get the best out of the book. Familiarity with Spark would be useful, but is not mandatory., What You Will Learn, Learn about Apache Spark and the Spark 2.0 architectureBuild and interact with Spark DataFrames using Spark SQLLearn how to solve graph and deep learning problems using GraphFrames and TensorFrames respectivelyRead, transform, and understand data and use it to train machine learning modelsBuild machine learning models with MLlib and MLLearn how to submit your applications programmatically using spark-submitDeploy locally built applications to a cluster, In Detail, Apache Spark is an open source framework for efficient cluster computing with a strong interface for data parallelism and fault tolerance. This book will show you how to leverage the power of Python and put it to use in the Spark ecosystem. You will start by getting a firm understanding of the Spark 2.0 architecture and how to set up a Python environment for Spark., You will get familiar with the modules available in PySpark. You will learn how to abstract data with RDDs and DataFrames and understand the streaming capabilities of PySpark. Also, you will get a thorough overview of machine learning capabilities of PySpark using ML and MLlib, graph processing using GraphFrames, and polyglot persistence using Blaze. Finally, you will learn how to deploy your applications to the cloud using the spark-submit command., By the end of this book, you will have established a firm understanding of the Spark Python API and how it can be used t
Spark 是一个开源的大数据处理框架,而 PySpark 则是 Spark 的 Python API。要安装和使用 SparkPySpark,你需要满足以下条件: 1. Java 环境:Spark 是用 Java 编写的,所以需要安装 Java 运行时环境 (JRE) 或 Java 开发工具包 (JDK)。推荐安装 JDK,因为它还包含了 JRE。 2. Python 环境:PySparkSpark 的 Python API,所以需要安装 Python。推荐安装 Python 3.x 版本。 3. Spark 安装包:从 Spark 官方网站 (https://spark.apache.org/downloads.html) 下载适合你系统的 Spark 安装包。选择预编译的版本,可以根据你的需求选择不同的版本和选项。 4. Hadoop 可选:如果你打算在分布式环境中使用 Spark,可以选择安装 Hadoop。Hadoop 是一个用于处理大规模数据集的分布式计算框架,Spark 可以与 Hadoop 集成以实现分布式数据处理。 安装完成后,你可以按照以下步骤使用 SparkPySpark: 1. 解压安装包:将下载的 Spark 安装包解压到你选择的目录。 2. 设置环境变量:将 Spark 的 bin 目录路径添加到系统的 PATH 环境变量中。 3. 启动 Spark:在终端或命令行中输入 `spark-shell` (Scala) 或 `pyspark` (Python) 命令,启动 SparkPySpark。 4. 使用 SparkPySpark:通过编写 Spark 应用程序或在 PySpark 中编写 Python 代码,利用 Spark 提供的丰富功能进行大数据处理和分析。 注意事项: - 在使用 PySpark 时,可以使用 Python 的第三方库来增强功能,如 NumPy、Pandas 等。 - 根据你的需求和环境配置,可能需要进行一些额外的设置和调整。请参考 Spark 官方文档和用户指南以获取更多详细信息。 希望以上信息对你有帮助!如果还有其他问题,请随时提问。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值