hql和sql的区别是什么(Spark Shark和Spark SQL区别 详解)


Spark

现在用的是Spark SQL,之前是Spark Shark

Spark Shark | 即 Hive on Spark

a.在实现上是把HQL翻译成Spark上的RDD操作,然后通过Hive的metadata获取数据库里的表信息,Shark获取HDFS上的数据和文件夹放到Spark上运算。

b.它的最大特性就是快以及与Hive完全兼容

c.Shark使用了Hive的API来实现query parsing和logic plan generation,最后的Physical Plan execution阶段用Spark代替Hadoop MR。

d.通过配置Shark参数,Shark可以自动在内存中缓存特定的RDD,实现数据重用,进而加快特定数据集的检索。

hql

e.Shark通过UDF实现特定的数据分析学习算法,使得SQL数据查询和运算分析结合在一起,最大化RDD的重复使用。



Spark SQL

a.是基于Catalyst(翻译为催化剂)引擎的交互式大数据SQL技术,使用SchemaRDD来操作SQL,比Shark支持更过的查询表达式。

b.支持Hive|HBase|Oracle

交互式SQL处理框架Spark SQL

a.SparkSQL的四个特点:

1.能在Scala代码里写SQL,支持简单的SQL语法检查,能把RDD指定为Table存储起来。对SQL的支持主要依赖Catalyst(催化剂)查询优化框架,在把SQL解析成逻辑执行计划之后,利用Catalyst包里的一些类和接口,执行了一些简单的执行计划优化

最后变成RDD的计算。

2.支持Parquet(arquet是面向分析型业务的列式存储格式)文件的读写,且保留Schem.Parquet是一个列式存储格式的文件系统,使用Parquet进行文件读写可以极大地降低对CPU和磁盘I/O的消耗。

3.支持直接多JSON格式数据的操作。

4.能在Scala代码里访问Hive元数据,能执行hive语句,并且把结果取回作为RDD使用。Shark依赖Hive的metastore,解析器能把hql执行变成Spark的计算,SparkSQL的前身是Shark,而Shark的前身是HIVE.

5.Shark对于Hive的依赖太多,为了摆脱依赖性,SparkSQL无论在数据兼容|性能优化|组件扩展都得到了极大的方便。

b.SparkSQL的性能:

1.Shark的出现,使得SQL-on-hadoop的性能比hive有了10~100倍的提高。摆脱Hive的限制,SSQL的性能也很优秀。

hql

您可以还会对下面的文章感兴趣

使用微信扫描二维码后

点击右上角发送给好友