大数据Spark企业级实战版【学习笔记】----Spark Shark& Spark SQL

来源:互联网 发布:滨州行知中学电话 编辑:程序博客网 时间:2024/05/18 05:19

4. Spark Shark

       Shark即Hive on Spark,本质上是通过Hive的HQL解析,Shark在Spark1.0.0由于整合度和性能等原因,已被Spark官方团队停止开发。Shark在实现上是把HQL翻译成Spark上的RDD操作,然后通过Hive的metadata获取数据库里的表信息,Shark获取HDFS上的数据和文件并放到Spark上运算。Shark的最大特性就是快以及与Hive完全兼容。

       Shark使用了Hive的API来实现queryParsing和Logic Plan generation,最后的Physical Plan execution阶段用Spark代替Hadoop MapReduce。通过配置Shark参数,Shark可以自动在内存中缓存特定的RDD,实现数据重用,进而加快特定数据集的检索。同时,Shark通过UDF(用户自定义函数)实现特定的数据分析学习算法,使得SQL数据查询和运算分析能结合在一起,最大化RDD的重复使用。

       Hive的架构图如图1-13所示,Shark的架构图如图1-14所示:

      


       对比Shark架构图和Hive架构图可以发现Shark为了实现Hive兼容,在HQL方面重用了Hive中HQL的解析、逻辑执行计划翻译、执行计划优化等逻辑,可以近似认为仅将物理执行几乎从MR作业替换成了Spark作业;同时还依赖Hive Meatastore和Hive SerDe(用于兼容现有的各种Hive存储格式)。这一策略导致了两个问题,第一是执行几乎优化完全依赖于Hive,不方便添加新的优化策略;二是因为MR是进程级并行,写代码的时候不是很注意线程安全问题,导致Shark不得不使用另外一套独立维护的打了补丁的Hive源码分支。

 

5. Spark SQL

       SparkSQL是被Spark 1.0.0新推出的基于Catalyst引擎的交互式大数据SQL技术,使用SchemaRDD来操作SQL,这个功能和Shark类似,但它比Shark支持更多的查询表达式。最新的版本支持Hive、JSON、Parquet等数据类型,其他数据类型也在计划列表中,如图1-15所示:


       

阅读全文
0 0
原创粉丝点击