Hive与Spark SQL原理详解
开源社区在分布式计算框架基础上构建了支持SQL的引擎,典型的代表是MapReduce之上的Hive以及Spark之上的Spark SQL,这些数据分析引擎通常不支持标准SQL,而是对SQL进行了选择性支持,并进行了适当扩展,其中最主流的数据分析语言为HQL(Hive Query Language)。
一、SQL On Hadoop
目前构建在Hadoop之上的SQL引擎主要分为两类,基于计算引擎和基于MPP架构:
- 基于计算引擎:SQL引擎是在计算引擎基础上构建的,其基本原理是将SQL语句翻译成分布式应用程序,之后运行在集群中。典型的代表有构建在MapReduce之上的Hive和构建在Spark之上的Spark SQL。这类SQL引擎的特点是具有良好的扩展性和容错性,能够应对海量数据。
- 基于MPP架构:SQL引擎是基于MPP架构构建的,其基本原理是将SQL翻译成可分布式执行的任务,采用Volcano风格的计算引擎并行处理这些任务,任务之间的数据流动和交换由专门的Exchange运算符完成。典型的代表由Impala等。这些SQL引擎具有良好的可扩展性ÿ