Pyspark实战
本篇文章介绍pyspark的使用,参考书籍《pyspark实战》。
Apache Spark最初由Matei Zaharia开发,于2013年创建了Databricks公司并担任CTO。
1.spark介绍
spark提供MapReduce的灵活性和可扩展性,但是明显速度更快。可以使用java,scala,sql,R和Python访问Spark API。
1.1 spark作业和API
spark作业与一系列对象依赖相关联,这些依赖关系以DAG图的方式组织。
弹性分布式数据集(RDD)是JVM对象的分布式集合,Spark是围绕RDD构建的。RDD有两种操作:转换和动作。
DataFrame与RDD类似,区别主要是DataFrame是以命名列的方式组织的。与关系型数据库中的表类似。与java、scala相比,python中的RDD速度很慢,但是DataFrame在各种语言中性能相似。
Spark SQL的核心是Catalyst优化器。
Spark 2.0发布的三个主要主题包括:性能增强;引入结构化流;统一Dataset和DataFrame。
2.RDD
2.1 创建RDD
下边使用两种方式生成RDD,
from pyspark import SparkContext data = SparkContext.parallelize([('alibaba', 790),('tencent',780),('jd', 50)]) data1 = SparkContext.textFile()
RDD是无Schema的数据结构,如果对数据集使用方法.collect(),collect方法执行把数据集送回驱动的操作,驱动器将其序列化成一个列表。