spark是目前大数据领域的核心技术栈,许多从事数据相关工作的小伙伴都想驯服它,变成"驯龙高手",以便能够驾驭成百上千台机器组成的集群之龙来驰骋于大数据之海。
但大部分小伙伴都没能成功做到这一点。有一部分小伙伴纠结在到底是学pyspark还是spark-scala上面迟迟未能出征,还有相当一部分倒在了开始的环境配置上,还有一些在几十几百个函数的用法中迷失了方向,还有少部分同学虽然掌握了一些简单用法,但是没有掌握性能优化技巧,一旦遇到真正复杂的大数据就毫无办法。
最近我的好友"算法美食屋"公众号的作者云哥开源了一个pyspark教程:《10天吃掉那只pyspark》,给有志于成为大数据"驯龙高手"的小伙伴带来了福音,以下是这个教程的目录,简直就是驯龙秘笈有木有???????? ?
感兴趣的小伙伴可以扫码下方二维码,关注公众号:算法美食屋。在后台回复关键字:pyspark,获取项目《eat pyspark in 10 days》github地址。
以下是这个教程的详细介绍。
一,pyspark ???? or spark-scala ???? ?
pyspark强于分析,spark-scala强于工程。
如果应用场景有非常高的性能需求,应该选择spark-scala.
如果应用场景有非常多的可视化和机器学习算法需求,推荐使用pyspark,可以更好地和python中的相关库配合使用。
此外spark-scala支持spark graphx图计算模块,而pyspark是不支持的。
pyspark学习曲线平缓,spark-scala学习曲线陡峭。
从学习成本来说,spark-scala学习曲线陡峭,不仅因为scala是一门困难的语言,更加因为在前方的道路上会有无尽的环境配置痛苦等待着读者。
而pyspark学习成本相对较低,环境配置相对容易。从学习成本来说,如果说pyspark的学习成本是3,那么spark-scala的学习成本大概是9。
如果读者有较强的学习能力和充分的学习时间,建议选择spark-scala,能够解锁spark的全部技能,并获得最优性能,这也是工业界最普遍使用spark的方式。
如果读者学习时间有限,并对Python情有独钟,建议选择pyspark。pyspark在工业界的使用目前也越来越普遍。
二,本书???? 面向读者????
本书假定读者具有基础的的Python编码能力,熟悉Python中numpy, pandas库的基本用法。
并且假定读者具有一定的SQL使用经验,熟悉select,join,group by等sql语法。
三,本书写作风格????
本书是一本对人类用户极其友善的pyspark入门工具书,Don't let me think是本书的最高追求。
本书主要是在参考spark官方文档,并结合作者学习使用经验基础上整理总结写成的。
不同于Spark官方文档的繁冗断码,本书在篇章结构和范例选取上做了大量的优化,在用户友好度方面更胜一筹。
本书按照内容难易程度、读者检索习惯和spark自身的层次结构设计内容,循序渐进,层次清晰,方便按照功能查找相应范例。
本书在范例设计上尽可能简约化和结构化,增强范例易读性和通用性,大部分代码片段在实践中可即取即用。
如果说通过学习spark官方文档掌握pyspark的难度大概是5,那么通过本书学习掌握pyspark的难度应该大概是2.
仅以下图对比spark官方文档与本书《10天吃掉那只pyspark》的差异。
四,本书学习方案 ⏰
1,学习计划
本书是作者利用工作之余大概1个月写成的,大部分读者应该在10天可以完全学会。
预计每天花费的学习时间在30分钟到2个小时之间。
当然,本书也非常适合作为pyspark的工具手册在工程落地时作为范例库参考。
2,学习环境
本书全部源码在jupyter中编写测试通过,建议通过git克隆到本地,并在jupyter中交互式运行学习。
为了直接能够在jupyter中打开markdown文件,建议安装jupytext,将markdown转换成ipynb文件。
为简单起见,本书按照如下2个步骤配置单机版spark3.0.1环境进行练习。
#step1: 安装java8
#jdk下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
#java安装教程:https://www.runoob.com/java/java-environment-setup.html
#step2: 安装pyspark,findspark
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyspark
pip install findspark
此外,也可以在和鲸社区的云端notebook中直接运行pyspark,没有任何环境配置痛苦。详情参考该项目的readme文档。
import findspark
#指定spark_home,指定python路径
spark_home = "/Users/liangyun/anaconda3/lib/python3.7/site-packages/pyspark"
python_path = "/Users/liangyun/anaconda3/bin/python"
findspark.init(spark_home,python_path)
import pyspark
from pyspark import SparkContext, SparkConf
conf = SparkConf().setAppName("test").setMaster("local[4]")
sc = SparkContext(conf=conf)
print("spark version:",pyspark.__version__)
rdd = sc.parallelize(["hello","spark"])
print(rdd.reduce(lambda x,y:x+' '+y))
spark version: 3.0.1
hello spark
五,鼓励和联系作者
感兴趣的小伙伴可以扫码下方二维码,关注公众号:算法美食屋,后台回复关键字:pyspark,获取项目《eat pyspark in 10 days》github地址。
也可以在公众号后台回复关键字:spark加群,加入spark和大数据读者交流群和大家讨论。