Spark、Python spark、Hadoop简介
Spark简介
1、Spark简介及功能模块
Spark是一个弹性的分布式运算框架,作为一个用途广泛的大数据运算平台,Spark允许用户将数据加载到cluster集群的内存中储存,并多次重复运算,非常适合用于机器学习算法。
Spark的核心是RDD(Resilient Distributed Dataset)弹性分布式数据集,RDD能与其他系统兼容,也可以导入外部储存系统的数据集,例如HDFS、HBase或其他Hadoop数据源。
Spark在运算时,将中间产生的数据暂存在内存中,因此可以加快运行速度,Spark在内存中运行命令比Hapdoop MapReduce命令运行速度快100倍(硬盘上快10倍)。
Spark的主要功能模块有:Spark SQL DataFrame、Spark Streaming、Mllib(machine learning)、GraphX
- Spark SQL DataFrame:Spark SQL 兼容SQL查询语言,DataFrame具有Schema(定义字段名与数据类型),可使用类SQL方法,例如select(),使用上比RDD更方便
- Spark Streaming:可实现实时的数据串流的处理,具有大数据量、容错性、可扩充性等特点。
- GraphX:分布式图形处理,可用于图表计算
- Spark MLlib:可扩充性机器学习库。
2、Spark数据处理
Spark数据处理的方式主要有3种:RDD、DataFrame、Spark SQL
三者主要的差异在于是否定义Scheme
- RDD 的数据未定义Scheme(也就是未定义字段名及数据类型),使用上必须有Map/Reduce的概念,需要高级程序设计,同时功能最强,能完成所有Spark功能。
- Spark DataFrame 建立时必须定义Schema(也就是定义字段名及数据类型)。
- Spark SQL 是由DataFrame衍生出来的,必须先建立DataFrame,然后通过登录Spark SQL temp table,就可以使用Spark SQL语法了。
易使用度:Spark SQL > DataFrame > RDD
DataFrame 与 Spark SQL 比RDD更快速
- DataFrame与Spark SQL通过Cataly进行最优化,可以大幅度提高执行效率。基于Python使用RDD速度慢于基于Sca