书籍内容
Spark SQL是Spark生态环境中核心和基础的组件,是掌握Spark的关键所在。本书完全从企业级开发的角度出发,结合多个企业级应用案例,深入剖析Spark SQL。全书共分为8章,包括:认识Spark SQL、DataFrame原理与常用操作、Spark SQL操作多种数据源、Parquet列式存储、Spark SQL内置函数与窗口函数、Spark SQL UDF与UDAF、Thrift Server、Spark SQL综合应用案例。
本书可以使读者对Spark SQL有深入彻底的理解,本书适合于Spark学习爱好者,是学习Spark SQL的入门和提高教材,也是Spark开发工程师开发过程中查阅Spark SQL的案头手册。
前言/序言
“Use of MapReduce engine for Big Data projects will decline, replaced by Apache Spark”
MapReduce计算模型的使用会越来越少,最终将被Apache Spark所取代。
——Hadoop之父Doug Cutting写作背景Spark是一个快速大规模数据处理的通用引擎。它给Java、Scala、Python和R等语言提供了高级API,并基于统一抽象的RDD(弹性分布式数据集),逐渐形成了一套自己的生态系统。这个生态系统主要包括负责SQL和结构化数据处理的Spark SQL、负责实时流处理的Spark Streaming、负责图计算的Spark GraphX以及机器学习子框架Mlib。Spark在处理各种场景时,提供给用户统一的编程体验,可极大地提高编程效率。
Hive是运行在Hadoop上的SQL on Hadoop工具,它的推出是为了给熟悉RDBMS但又不理解MapReduce的技术人员提供快速上手的工具,但是MapReduce在计算过程中消耗大量I/O资源,降低了运行效率。为了提高SQL on Hadoop的效率,Shark出现了,它使得SQL on Hadoop的性能比Hive有了10~100倍的提高。但Shark对于Hive的过度依赖(如采用Hive的语法解析器、查询优化器等),制约了Spark的发展,所以提出了Spark SQL项目,Spark SQL抛弃Shark原有的弊端,又汲取了Shark的一些优点,如内存列存储(In-Memory Columnar Storage)、Hive的兼容性等,由于摆脱了对Hive的依赖性,Spark SQL在数据兼容、性能优化、组件扩展等方面的性能都得到了极大的提升。
Spark SQL是Spark生态环境中最核心和最基础的组件,是掌握Spark的关键所在。由于目前市场上介绍Spark技术的书籍比较少,尤其是单独讲解Spark SQL的书更是凤毛麟角,我们特意编写了这本理论和实战相结合的Spark SQL书籍,在介绍Spark SQL核心技术的同时又配备了丰富的示例,同时还穿插了源代码的分析,使读者能从更深层次来把握Spark SQL的核心技术。
内容速览本书完全从企业级开发的角度出发,结合多个企业级应用案例,深入剖析Spark SQL。
全书一共分为8章,主要内容概括如下:
第1章认识Spark SQL,引领读者了解Spark SQL的基础知识,接下来的第2章至第7章,结合实战案例,引导读者掌握Spark SQL的核心知识,这6章内容分别为:DataFrame原理与常用操作、Spark SQL操作多种数据源、Parquet列式存储、Spark SQL内置函数与窗口函数、Spark SQL UDF与UDAF、Thrift Server;本书的最后部分,第8章Spark SQL综合应用案例归纳并综合运用了全部Spark SQL知识点,是深入理解Spark SQL的经典案例。
本书可以使读者对Spark SQL有深入的理解,是Spark爱好者用来学习Spark SQL的理想教程,也是Spark开发工程师在开发过程中可随时查阅的案头手册。
本书作者本书由王家林和段智华编写。
预备知识在学习本书之前读者需要熟悉基本的Linux命令及Java、Scala语言,掌握基本的Spark知识架构,能够搭建Spark集群环境。
致谢在本书编写的过程中,作者参考了很多网络上的书籍和博客,在此谢谢各位作者,正是你们的无私奉献,才推动了Spark技术的快速发展。
特别感谢“小小”同学为本书的编写提供的各种协调和热心帮助。
由于笔者能力有限,书中难免存在错误或表达不准确的内容,恳请大家批评指正,希望大家一起努力使Spark技术在大数据计算领域里推广开来。
作者2017.9