Spark SQL入门与实践指南 - (EPUB全文下载)
文件大小:0.15 mb。
文件格式:epub 格式。
书籍内容:
Spark SQL入门与实践指南
第1章 初识Spark SQL
第2章 Spark安装、编程环境搭建以及打包提交
第二部分 基础篇
第3章 Spark上的RDD编程
第4章 Spark SQL编程入门
第5章 Spark SQL的DataFrame操作大全
第6章 Spark SQL支持的多种数据源
第三部分 实践篇
第7章 Spark SQL工程实战之基于WiFi探针的商业大数据分析技术
第8章 第一个Spark SQL应用程序
第四部分 优化篇
第9章 让Spark程序再快一点
第1章 初识Spark SQL
在这一章中读者将大致了解Spark SQL的发展历程、Spark SQL的特点,以及用Spark SQL能做些什么。
1.1 Spark SQL的前世今生
1.Spark的诞生
相信大家都听说过MapReduce这个框架,MapReduce是对分布式计算的一种抽象。程序员对map方法和reduce方法进行简单的编写就能迅速地构建出并行化的程序,而不用担心工作在集群上的分布和集群当中数据的容错,这就大大地降低了程序的编写和部署难度。
遗憾的是,MapReduce这个框架缺少了对分布式内存利用的抽象,这就导致了在不同的计算任务间(比如说两个MapReduce工作之间)对数据重用的时候只能采用将数据写回到硬盘中的方法。而计算机将数据写回到磁盘的这个过程耗时是很长的。如今,许多机器学习的算法都需要对数据进行重用,并且这些算法中都包含着大量的迭代计算,比如说PageRank、K-means等算法。如果使用MapReduce来实现这些算法,那么在执行的时候,将会有大量的时间被消耗在I/O上面。针对这个问题,伯克利大学提出了RDDs(弹性分布式数据集RDDs是一个具有容错性和并行性的数据结构,它可以让我们将中间结果持久化到内存中)的思想,RDDs提供了对内存的抽象,然后伯克利大学根据RDDs的思想设计出了一个系统,Spark就这样诞生了。
2.从Shark到Spark SQL
Spark诞生之后,人们开始使用Spark,并且喜欢上了Spark。渐渐的,使用Spark的人越来越多。突然有一天,一部分人产生了一个大胆的想法:Hadoop上面有Hive,Hive能把SQL转成MapReduce作业,这多么方便啊!Spark这么好用的系统却没有配备类似Hive这样的工具,要不我们也造一个这样的工具吧!于是Shark被提了出来,Shark将SQL语句转成RDD执行。这就仿照了Hadoop生态圈,做出了一个Spark版本的“Hive”。做出这个工具之后人们十分开心,因为他们终于也能愉快地使用SQL对数据进行查询分析了,可以大大地提高程序的编写效率。图1-1所示是Shark的架构示意图,来自https://amplab.cs.berkeley.edu/wp-content/uploads/2012/03/mod482-xin1.pdf。
图1-1
随着越来越多的人使用Shark和其版本的更新,人们发现Shark具有一定的局限性。细心的小伙伴会发现图1-1中Shark的框架使用了HiveQL Parser这一模块。这样一来Shark对Hive有了依赖,导致Shark添加一些新的功能或者修改一些东西时特别不方便。这样Shark的发展受到了严重的限制。
由于Shark这样的一些弊端,在2014年左右人们决定终止Shark这个项目并且将精力转移到Spark SQL的研发当中去。之后一个新的SQL引擎——Spark SQL就诞生了。
1.2 Spark SQL能做什么
现在我们知道了Spark SQL是怎么来的,那么Spark SQL到底能做些什么呢?下面我们根据ETL(数据的抽取、转换、加载)的三个过程来讲解一下Spark SQL的作用。
(1)抽取(Extract):Spark SQL可以从多种文件系统(HDFS、S3.本地文件系统等)、关系型数据库(MySQL、Oracle、PostgreSQL等)或NoSQL数据库(Cassandra、HBase、Druid等)中获取数据,Spark SQL支持的文件类型可以是CSV、JSON、XML、Parquet、ORC、Avro等。得益于Spark SQL对多种数据源的支持,Spark SQL能从多种渠道抽取人们想要的数据到Spark中。
(2)转换(Transform):我们常说的数据清洗,比如空值处理、拆分数据、规范化数据格式、数据替换等操作。Spark SQL能高效地完成这类转换操作。
(3)加载(Load):在数据处理完成之后,Spark SQL还可以将数据存储到各种数据源(前文提到的数据源)中。
如果你以为Spark SQL只能做上面这些事情,那你就错了。Spark SQL还可以作为一个分布式SQL查询引擎通过JDBC或ODBC或者命令行的方式对数据库进行分布式查询。Spark SQL中还有一个自带的Thrift JDBC/ODBC服务,可以用Spark根目录下的sbin文件夹中的start-thriftserver.sh脚本启动这个服务。Spark中还自带了一个Beeline的命令行客户端,读者可以通过这个客户端连接启动的Thrift JDBC/ODBC,然后提交SQL。
如果你以为Spark SQL能做的只有这些,那你就错了。Spark SQL还可以和Spark的其他模块搭配使用,完成各种各样复杂的工作。比如和Streaming搭配处理实时的数据流,和MLlib搭配完成一些机器学习的应用。
第2章 Spark安装、编程环境搭建以及打包提交
通过上一章的学习,相信读者已经了解了Spark SQL是什么、能做什么、发展状况如何,在这一章中读者将学习在Linux中完成Spark的安装,以及搭建本书后面需要用到的Spark程序的编写环境,并能够将程序打包提交到Spark中运行。
2.1 Spark的简易安装
搭建Spark之前需要读者先安装好Hadoop,由于这个环境用于本书学习 ............
以上为书籍内容预览,如需阅读全文内容请下载EPUB源文件,祝您阅读愉快。
书云 Open E-Library » Spark SQL入门与实践指南 - (EPUB全文下载)