我们知道MapReduce和Spark它们提供了高度抽象的编程接口便于用户编写分布式程序,它们具有极好的扩展性和容错性,能够处理超大规模的数据集。这些计算引擎提供了面向高级语言(比如Java,Python等)的编程接口,然而,考虑到分布式程序编写的复杂性,直接使用这些编程接口实现应用系统(比如报表系统)无疑会提高使用门槛,降低开发效率。考虑到SQL仍然是一种非常主流的数据分析语言,开源社区在分布式计算框架基础山构建了支持SQL的引擎,其中典型的代表是MapReduce之上的Hive以及Spark之上的Spark SQL,这些数据分析引擎通常不支持标准得到SQL,而是对SQL进行了选择性支持,并进行了适当扩展,其中最主流的数据分析语言为HQL(Hive Query Language)。
简而言之,Hive是对非Java,python等编程者对hdfs数据做MapReduce操作。
大数据计算引擎为大规模数据处理提供了解决方案,它们提供了高级编程语言(比如Java,Python等)编程接口,可让程序员很容易表达计算逻辑。但在大数据领域,仅提供对编程语言的支持是不够的,这会降低一些数据分析场景(比如报表系统)下的开发效率,也提高了使用门槛。
为了让更多人使用这些大数据引擎分析数据,提高系统开发效率,大数据系统引入了对SQL的支持。SQL作为一种主流的数据分析语言,仍广受数据分析师欢迎,主要原因如下:
SQL能够跟现有系统进行很好的集成,现有的有JDBC/ODBC