在 Hive 与 Spark 这对“万金油”组合中,Hive 擅长元数据管理,而 Spark 的专长是高效的分布式计算,二者的结合可谓是“强强联合”。今天这一讲,我们就来聊一聊 Spark 与 Hive 集成的两类方式,一类是从 Spark 的视角出发,我们称之为 Spark with Hive;而另一类,则是从 Hive 的视角出发,业界的通俗说法是:Hive on Spark。
当 Hive 采用 Spark 作为底层的计算引擎时,我们就把这种集成方式称作“Hive on Spark”。相反,当 Spark 仅仅是把 Hive 当成是一种元信息的管理工具时,我们把 Spark 与 Hive 的这种集成方式,叫作“Spark with Hive”。
Spark with Hive
在开始正式学习 Spark with Hive 之前,我们先来说说这类集成方式的核心思想。前面我们刚刚说过,Hive Metastore 利用 RDBMS 来存储数据表的元信息,如表名、表类型、表数据的 Schema、表(分区)数据的存储路径、以及存储格式,等等。形象点说,Metastore 就像是“户口簿”,它记录着分布式文件系统中每一份数据集的“底细”。
Spark SQL 通过访问 Hive Metastore 这本“户口簿”,即可扩充数据访问来源。而这,就是 Spa