Hello,今天为大家分享一下PySpark中关于DataFrame的常用操作。
DataFrame相比大家都知道,是一种不可变的分布式数据集,这种数据集被组织成指定的列,类似于关系数据库中的表,如果大家熟悉python或者R语言中的DataFrame那么这个DataFrame就很好理解,因为spark中的DataFrame就是基于这哥们来的
曾今说过,每个概念出来都是有它的必然性的,我们一起来看看为什么需要DataFrame呢,首先一起看看python与RDD之间的通信:
那么诱人就会问,Spark Sql引擎为什么那么快呢,其实这是因为另一个原因Catalyst优化器(Tungsten项目),大家若感兴趣,可以百度下这个优化器,而我们今天要说的是利用DataFrame多pysaprk进行加速,DataFrame和Catalyst优化器的意义在于和非优化的RDD查询比较时增加PySpark的性能,这种查询性能的提升源于降低了Python和JVM之间的通信开销。
接下来我们就一起看看到底怎么使用
创建DataFrame
如上代码,我们就创建了一个DataFrame和一张临时表,本人环境是将pysaprk直接运行在了jupyter上,此处请注意~
接下来我们利用DataFrame API进行一些基础查询
还可以利用SQL进行查询
也可以执行筛选语句
DataFrame与RDD的交互操作
在建立DataFrame和运行查询的过程中,DataFrame的模式是自动定义的,对象是通过K/V来作为行类的**kwargs构建,然后spark Sql将行对象的RDD转为一个DataFrame,在DataFrame中建就是列,数据类型通过采样数据来判断。
打印模式
通过编程方式指定模式
这些呢就是DataFrame的一些基础操作,大家感兴趣可以多查查这方面的资料,百度真的很多,还有就是环境问题,因为我直接在jupyter运行的是pyspark,所以上述代码能成功,如果您的环境不是这样,你得需要重新构建,如下:
ok,今天的分享就到此结束,下期在见~~~
领取专属 10元无门槛券
私享最新 技术干货