01pyspark介绍及环境搭建支持JavaScalaPython和R4编程语言接口),需要依赖py4j库(即是,pythonforjava的首字母缩写),而正是这个库实现了python和java的互联互通,所以pyspark库虽然体积大,约226M,但实际上大部分都是spark中原生的jar包,占用217M,占体积的96%。由于Spark是基于Scala语言的大数据组件,而Scala语言运行在JVM虚拟机上,所以Spark自然而然的依赖了JDK。目前为止,JDK8依然可用,几乎是安装主要数据组件的首选。因此,搭建pyspark环境,首先需要安装JDK8,然后这里介绍两种搭建pyspark运行环境的方法:1)pipinstallpyspark+任意pythonIDE。命令即可完成自动安装:pipinstallpyspark为了保证更快的下载速度,可以将pip源改为国内镜像。具体设置方法可以参考历史文章:是时候总结一波Python环境搭建问题了2)从Spark官网下载指定的tar包解压不同于其他大数据组件,Spark其实提供了一个很好的兼容windows系统下的运行环境,方法也很简单。访问spark官网,选择目标版本(目前最新版本为spark3.1.1),点击链接跳转到下载页面。不出意外的话,会自动推荐国内的镜像下载地址,所以下载速度是有保障的。下载后会得到一个tgz格式的文件,移动到相应目录直接解压,然后进入bin目录,选择打开pyspark.cmd,会自动创建一个pysparkshell运行环境。整个过程非常简单,不需要任何设置。进入pyspark环境,已经创建了sc和spark两个入口变量,对比一下两种pyspark环境的构建方式:运行环境不同:pip源安装相当于扩展了python运行时库,所以可以在里面引入使用任何pythonIDE,更灵活方便;而sparktar包的解压本质上相当于在windows系统下安装一个软件,只能通过执行“软件”来访问,提供不同的功能:pip源安装方式仅限于python语言使用,只要能导入pyspark就够了;sparktar包的解压不仅提供了pyspark入口,还提供了spark-shell(scala版)sparkR等cmd执行环境;用法不同:pip源安装使用时需要导入相应的包,手动创建sc和spark入口变量;并且sparktar包解压进入shell时,会提供创建的sc和spark入口变量,比较方便。总的来说,这两种方法各有优缺点。如果是正规的开发和数据处理过程,个人倾向于选择先进入pyspark环境;对于简单的功能测试,将首先使用pyspark.cmd环境。02三大数据分析工具灵活切换在日常工作中,我们经常会使用多种工具来满足不同的数据分析需求。比如最常用的工具有SQL、Pandas和Spark3,因为我们喜欢SQL简洁易用的语法、Pandas丰富多样的API、Spark的分布式大数据处理能力,可惜这些工具也有各自的特点弱点,比如SQL只能用来处理一些简单的需求,复杂的逻辑实现可能性不大;Pandas只能单机运行,大数据处理能力弱;Spark接口比较有限,有些算子写起来比较复杂。懒惰是人类进步的阶梯,这个道理也体现在数据处理工具的选择上。能够在多个工具之间灵活切换,自由组合,自然是最朴(偷)朴(懒)的想法。还好pyspark正好可以满足这个需求!以SQL中的数据表、pandas中的DataFrame和spark中DataFrame中的三种数据结构为对象,依赖如下接口实现三种工具之间数据的任意切换:spark.createDataFrame()#实现自pd.DataFrame->spark.DataFramedf.toPandas()#实现从spark.DataFrame->pd.DataFramedf.createOrReplaceTempView()#实现从spark.DataFrame注册为临时SQL表spark.sql()#实现从注册临时表查询到得到spark.DataFrame当然pandas也可以通过pd.read_sql和df.to_sql实现pandas和数据库表的序列化和反序列化,不过这里主要指的是内存中数据结构的任意切换。一个小例子:1)spark创建一个DataFrame2)spark.DataFrame转为pd.DataFrame3)pd.DataFrame转为spark.DataFrame4)spark.DataFrame注册一个临时数据表并执行SQL查询随机切换分析工具,比如大数据阶段使用Spark,数据过滤后使用Pandas丰富的API,偶尔加几句SQL!自我意识...
