收藏文章 楼主

安利一款大数据分析引擎——Spark SQL

版块:IT/互联网   类型:普通   作者:小羊羔links   查看:261   回复:0   获赞:0   时间:2022-08-27 01:13:43

查询分析是大数据要解决的核心问题,而SQL作为查询分析中使用最简单、最广泛的的语言之一,必然而然的发展创建了许多支持在Hadoop上使用SQL,这就是SQL on Hadoop,其中Hive就是最早的SQL on Hadoop

HDFSHBase并不支持SQL,所以诞生了一大批SQL On Hadoop工具,这些工具有些是在MapReduce上做了包装,有些是在HDFS上实现了完整的一套数据仓库,下面介绍一些常用的SQL on Hadoop工具。

1Apache Hive

Hive是最早的唯一运行在Hadoop上的SQL on Hadoop工具,它是一个开源的Java项目。

Hive SQL,简称HQL,是 Hive 提供一个 SQL 方言。Hive 查询操作过程严格遵守 Hadoop MapReduce 的作业执行模型,Hive 将用户的Hive SQL 语句通过解释器转换为 MapReduce 作业提交到Hadoop 集群上,Hadoop 监控作业执行过程,然后返回作业执行结果给用户。

Hive的优缺点如下

优点 几乎所有的Hadoop机器都安装了HiveHive环境很容易建立。

缺点 Hive的查询性能很低,因为它会把SQL转换为运行得较慢的MAPReduce任务。

虽然Hive的性能不是最快的,但是Hive是最流行的,因为 1HiveHadoop的默认SQL选项,每个版本都支持。2Hive已经在减少和其他引擎的性能差距。TezApache开源的分布式计算框架,是一个Hive的运行引擎,用于解决因为使用MAPReduce而导致的响应时间慢的问题。Tez可以将多个作业转换成一个作业,这样只需要写一次HDFS,中间节点少,提高了作业的计算性能。Tez在一些公司的线上环境中使用,也得到了很好了认可。

2Impala

Impala底层是使用C++写的,2012年由Cloudera开发,现在是Apache开源项目。Impala是一个针对Hadoop的交互式SQL查询引擎,与Hive配合使用,可以对Hive的结果数据集进行实时分析。

Impala的优缺点如下

优点 Impala的设计目标是作为Hive的一个补充,因此如果需要比Hive更快的数据访问,那么可以选择它。

缺点 但是如果要使用Impala,需要将数据存储为特定的文件格式——Parquet。另外需要在集群上安装Impala守护进程,这会占用一部分的内存。

3Presto

Presto是一个用Java语言开发的,Facebook开源的交互式SQL查询引擎,为了解决Hive查询慢而产生。数据全部在内存中处理,作用和Impala类似。

Presto的优缺点如下

优点 基于内存的计算引擎,Presto本身并不存储数据,减少了磁盘I/0,计算速度更快,支持跨数据源的级联查询。

缺点 Presto没有被一个主要的供应商支持,所以在使用Presto时无法获得企业支持,后续服务无法保障。

4Apache Drill

Apache Drill是一个分布式的、开源的交互式SQL查询引擎。Apache Drill的目标与ImpalaPresto相似,都是对大数据进行快速的交互式查询,同时它也需要安装工作节点。不同的是,Apache Drill支持多种存储,如HDFSHBase等数据进行数据查询,也支持对如JSONschema-free的数据进行查询。

Drill的优缺点如下

优点 1、支持自定义的嵌套数据集(如JSON ,数据灵活。2、支持多种数据源。

缺点 国内使用的比较少,缺少大型成功案例。出现问题后,维护起来比较困难。

5Apache Phoenix

Apache Phoenix是一个运行在HBase上的SQL框架,其本质是用Java写的基于JDBC API操作HBase的开源SQL引擎,通过Phoenix可以像使用MySQL等关系型数据库一样操作HBase中的表。

Phoenix的优缺点如下

优点 支持事务,高并发读写,支持多列的二级索引,支持JDBC等。

缺点 Phoenix创建的表一旦创建,表的Schema信息则不能修改。

6Shark

Shark是使用Scala语言开发的一个开源的SQL查询引擎。与ImpalaPresto相似的是,Shark的设计目的是作为Hive的补充,同时,在它自己的工作节点集合上执行查询而不是使用MAPReduce。与ImpalaPresto不同的是,Shark构建在已有的Apache Spark数据处理引擎之上。

Shark的优缺点如下

优点 由于底层计算采用了Spark,性能比MapReduceHive普遍快两倍以上,当数据全部加载在内存的话,将快十倍以上。

缺点 对Hive的依赖性太强,难以支持其长远发展,比如不能和Spark的其他组件进行很好的集成。

Spark SQL的特点

1Spark SQL的发展史

Spark的执行效率高于MAPReduce的执行效率,Hive运行在Spark上的产品则是SharkShark的本质是通过HiveHQL解析,从Hive的元数据获取数据库的表信息,由Shark获取并放到Spark上运算。

Shark的性能要远远高于Hive,但是由于Shark过于依赖Hive,继承了大量的Hive代码,给优化和维护带来了大量的麻烦。所以为了更好的发展,Databricks宣布终止对Shark的开发,将相应的SQL处理功能独立出来,更名为Spark SQLSpark SQL抛弃原有Shark的代码,汲取了Shark的优点,如内存列存储、Hive兼容性等;重新开发了Spark SQL代码,由于摆脱了对Hive的依赖。Spark SQL无论在数据兼容、性能优化、组件扩展方面都得到了极大的升级。

所以HiveShark的前身,SharkSpark SQL的前身,Spark SQL产生的根本原因是为了摆脱Hive的限制。

2Spark SQL的概述

Spark SQLSpark的核心组件之一,用于结构化数据处理。和Spark RDD编程不同,Spark SQL提供了更高层级的接口使得处理和计算数据更加方便。在Spark SQL中,不仅能使用SQL进行数据处理,还能使用API的方式处理和分析数据,而且还可以访问包括HiveParquetJSON在内的数据源。

3Spark SQL的特点

1 易整合

无缝的整合了SQL查询和Spark程序。Spark SQL允许将结构化数据作为Spark中的分布式数据集(RDD)进行查询,在PythonScalaJava中集成了API。这种紧密的集成可以轻松地运行SQL查询以及复杂的分析算法。

2 统一的数据访问方式

使用相同的方式连接不同的数据源。可以使用统一的接口来访问各种数据源,包括HiveAvroParquetORCJSONJDBC

3 兼容Hive

在已有的仓库上直接运行SQLHQLSpark SQL重用了Hive前端和MetaStore,与现有Hive数据,查询和UDF的完全兼容性,只需将其与Hive一起安装即可。

4 标准的数据连接

通过JDBCODBC来连接。Spark SQL包括具有行业标准JDBCODBC连接的服务器模式。

Spark SQL的数据模型

关系数据库中的数据表,在Spark SQL中被定义为DataFrameDataFrame由两部分组成 表结构的Schema和数据集合RDD

RDDDataFrame的区别

从上图可知,RDD是分布式的Java对象的数据集合,而DataFrameRDD的基础上增加了Schema的结构信息。所以,可以把DataFrame看成一张表;Schema看成为表头,即表中每一列都带有的名称和数据类型;RDD也可以看成为表中数据。DataFrame有个曾用名叫SchemaRDD,这就不难理解了。

下图为RDDDataFrame中的数据,这样看RDDDataFrame的区别就很明显了。

RDDDataFrame中的数据

左侧的RDD[Person]虽然以Person为类型参数,但Spark框架本身不了解Person类的内部结构。而右侧的DataFrame却提供了详细的结构信息,使得Spark SQL可以清楚地知道该数据集中包含哪些列,每列的名称和数据类型各是什么。

DataFrame还在Spark Core基础上提供了API接口,其实就是各种算子,达到了提升执行效率,减少数据读取,优化执行计划的目的。




小羊羔锚文本外链网站长https://seo-links.cn 
回复列表
默认   热门   正序   倒序

回复:安利一款大数据分析引擎——Spark SQL

Powered by 小羊羔外链网 8.3.7

©2015 - 2024 小羊羔外链网

免费发软文外链 鄂ICP备16014738号-6

您的IP:44.222.242.27,2024-03-29 21:00:11,Processed in 0.048 second(s).

支持原创软件,抵制盗版,共创美好明天!
头像

用户名:

粉丝数:

签名:

资料 关注 好友 消息