org.apache.spark.sql.sqlcontext 怎么取出sum后的值

org.apache.spark.sql.sqlcontext 怎么取出sum后的值,第1张

eclipse依选择File –>New –> Other… –> Scala Wizard –> Scala Project创建Scala工程并命名SparkScala 右击SaprkScala工程选择Propertiesd框按照图所示依选择Java Build Path –>Li

有时我们使用sparkSQL做复杂模型时需要实现对数据的快速预览,假如模型是用好几表做Join且每个表的数据量都挺大时,那么预览就会很慢。

普通的预览我们可能会怎么写SQL:

这样写挺费spark计算资源的,且速度达不到预览要求。

数据预览我们并不保证最终结果的正确性,只是出一个大体的数据,方便对模型的创建和修改。

实现快速预览的必要条件是减少源数据的读取,这样我们只需要把目标定在减少表数据的读取就能实现快速预览。

熟悉sparkSQL都知道,与数据源相关的LogicalPlan是LogicalRelation,我们看下LogicalRelation定义。

里面有个relation属性,类型是BaseRelation,这是个抽象类,具体我们看它的实现类。

我们的底层数据是存储在Hadoop上的关注 HadoopFsRelation

关注location这个属性,类型是FileIndex,数据的存放位置与它有关。

关注方法listFiles,获取文件信息会调用它,我们只需要在这个方法做些手脚就OK了。

到此把我们的优化器加到spark里就能实现快速预览的逻辑啦,速度贼快!

Hive是目前大数据领域,事实上的SQL标准。其底层默认是基于MapReduce实现的,但是由于MapReduce速度实在比较慢,因此这几年,陆续出来了新的SQL查询引擎,包括Spark SQL,Hive On Tez,Hive On Spark等。

Spark SQL与Hive On Spark是不一样的。Spark SQL是Spark自己研发出来的针对各种数据源,包括Hive、JSON、Parquet、JDBC、RDD等都可以执行查询的,一套基于Spark计算引擎的查询引擎。因此它是Spark的一个项目,只不过提供了针对Hive执行查询的工功能而已,适合在一些使用Spark技术栈的大数据应用类系统中使用。

而Hive On Spark,是Hive的一个项目,它是将Spark作为底层的查询引擎(不通过MapReduce作为唯一的查询引擎)。Hive On Spark,只适用于Hive,在可预见的未来,很有可能Hive默认的底层引擎就从MapReduce切换为Spark了;适合于将原有的Hive数据仓库以及数据统计分析替换为Spark引擎,作为全公司通用的大数据统计分析引擎。

Hive On Spark做了一些优化:

1、Map Join

Spark SQL默认对join是支持使用broadcast机制将小表广播到各个节点上,以进行join的。但是问题是,这会给Driver和Worker带来很大的内存开销。因为广播的数据要一直保留在Driver内存中。所以目前采取的是,类似乎MapReduce的Distributed Cache机制,即提高HDFS replica factor的复制因子,以让数据在每个计算节点上都有一个备份,从而可以在本地进行数据读取。

2、Cache Table

对于某些需要对一张表执行多次 *** 作的场景,Hive On Spark内部做了优化,即将要多次 *** 作的表cache到内存中,以便于提升性能。但是这里要注意,并不是对所有的情况都会自动进行cache。所以说,Hive On Spark还有很多不完善的地方。

Hive QL语句 =>

语法分析 => AST =>

生成逻辑执行计划 => Operator Tree =>

优化逻辑执行计划 => Optimized Operator Tree =>

生成物理执行计划 => Task Tree =>

优化物理执行计划 => Optimized Task Tree =>

执行优化后的Optimized Task Tree

以上就是关于org.apache.spark.sql.sqlcontext 怎么取出sum后的值全部的内容,包括:org.apache.spark.sql.sqlcontext 怎么取出sum后的值、sparkSQL新增优化器实现复杂计算的快速预览、Spark SQL(十):Hive On Spark等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9302328.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-26
下一篇2023-04-26

发表评论

登录后才能评论

评论列表(0条)

    保存