赞
踩
欢迎关注公众号:livandata
前面几篇文章我们讲解了大数据计算的主要架构:hadoop和spark,从离线和实时解决了大数据分析过程中遇到的大部分问题,但是这是否是就代表了大数据计算引擎?
不是的~
现阶段流批一体盛行,Flink也逐渐进入大家的视野,大有发展壮大的趋势,我们后面会单独讲解这一工具,这篇文章我们重点讲解一下基于spark运算的pyspark工具。
pyspark不是所有的代码都在spark环境应用,可以将一些主要的运算单元切到spark环境运算完成,然后输出运算结果到本地,最后在本地运行一些简单的数据处理逻辑。
pyspark主要的功能为:
1)可以直接进行机器学习的训练,其中内嵌了机器学习的算法,也就是遇到算法类的运算可以直接调用对应的函数,将运算铺在spark上训练。
2)有一些内嵌的常规函数,这些函数可以在spark环境下处理完成对应的运算,然后将运算结果呈现在本地。
个人理解pyspark是本地环境和spark环境的结合用法,spark中的函数是打开本地环境到spark环境的大门,本地的数据和逻辑按照spark运算规则整理好之后,通过spark函数推到spark环境中完成运算。
所以关键在于有多少计算方式是可以放在spark环境计算的,有多少常用的pyspark函数;
pyspark原理介绍
原理图如下:
上图中,python中调用sparkcontext。
sparkcontext会通过py4j启动jvm中的javasparkcontext,javasparkcontext再将数据逻辑推到集群中完成运算。
结合上图,pyspark的运算逻辑为:
运算job时pyspark会通过py4j将写好的代码映射到jvm中,jvm调用自身的sparkcontext.runjob()函数,实现job的分发,分发的方式是spark的,每个job分发到集群各个executor上之后,各个executor中jvm会调用自身服务器的python进程,完成自身部分的运算,运算完成后再将结果集返回给jvm,原路返回,最终呈现在python的界面上。
有没有感觉jvm只是一个通道?
是的~
简单讲他的功能就是将python分发到各个节点上,然后再将运算结果收回来。
pyspark的常用函数
1)parallelize():将list数据序列化成RDD格式,方便spark进行运算;
2)collect():将RDD格式数据转化成list数据,方便数据输出;
3)glom():显示出RDD
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。