SparkSQL结合SparkStreaming,使用SQL完成实时计算中的数据统计 – lxw的大数据田地
http://lxw1234.com/archives/2015/11/552.htm
Flume+Kafka+SparkStreaming已经发展为一个比较成熟的实时日志收集与计算架构,利用Kafka,即可以支持将用于离线分析的数据流到HDFS,又可以同时支撑多个消费者实时消费数据,包括SparkStreaming。然而,在SparkStreaming程序中如果有复杂业务逻辑的统计,使用scala代码实现起来比较困难,也不易于别人理解。但如果在SparkSteaming中也使用SQL来做统计分析,是不是就简单的多呢?
本文介绍将SparkSQL与SparkStreaming结合起来,使用SQL完成实时的日志数据统计。
SparkStreaming程序以yarn-cluster模式运行在YARN上,不单独部署Spark集群。
简单之美 | Spark-1.3.1与Hive整合实现查询分析
http://shiyanjun.cn/archives/1113.html
总结
根据上面我们实践的整合Spark+Hive,在执行复杂统计分析时,完全可以使用Spark SQL来替代Hive,至少会提高几倍的速度,对于一些基于Hive统计应用,可能每天晚上要执行6个小时以上的统计计算,导致第二天结果数据都无法出来,如果统计需求再次增加,可能时间还会更长。除了对Hive查询语句进行优化之外,应该说优化空间不大,所以这个时候可以考虑使用Spark平台来实现统计分析,而且,Spark集群可以线性扩展,对于一些调优也更容易一些。
这样我们可以直接在Spark SQL Shell上输入Hive查询语句就可以执行查询分析计算。
解读2015之Spark篇:新生态系统的形成
http://www.infoq.com/cn/articles/2015-Review-Spark
DataFrame和SQL API
Spark从API的角度看,可以分为两大类:
类似于Python的Pandas和R语言的DataFrame API,用户可以使用Scala/Java/Python/R四种语言调用这个API处理数据;
SQL语言API。又分为两种:一个是普通的Spark SQL,一种是Hive SQL。
虽然API不同,但是背后解析出来的算子是一样的,DataFrame的各种算子其实就是各种SQL的语法。Spark在SQL语法的支持越来越丰富的同时内置的SQL函数得到了很大的增强,目前已经有超过100个这样的常用函数(string, math, date, time, type conversion, condition),可以说最常见的SQL内置函数都有了。
作为一个类SQL的分析工具,聚合函数是非常核心的。Spark 1.5和1.6在聚合函数上都有很大改进:实现了一个新的聚合函数接口,支持了一些build-in的聚合函数(例如max/min/count/sum/avg/first/corr/stddev/variance/skewness/kurtosis以及一些窗口函数等),同时基于新接口实现了相应的UDAF接口。新的聚合函数接口是AggregateFunction,有两种具体的实现:ImperativeAggregate和DeclarativeAggregate。ImperativeAggregate类型的聚合操作就是通过用户定义三个动作 initialize/update/merge的逻辑来实现聚合的;而DeclarativeAggregate则是通过指定initialValues/updateExpressions/mergeExpressions这三个表达式然后通过代码生成的方式来做聚合的操作。这两种方式各有利弊,一般来说代码生成效率更高,但是像variance/stddev/skewness/kurtosis这样的多个表达式需要依赖同一个中间表达式的场景下,代码生成的执行路径由于不能共享中间的结果,从而导致其不如ImperativeAggregate效率更高,所以在Spark内部的实现中这几个聚合函数也是通过ImperativeAggregate来实现的。
spark sql根本使用方法介绍 - SQL
http://www.myexception.cn/sql/2043136.html
通过spark sql 直接查询hive或impala中的数据
spark SQL和hive到底什么关系_百度知道
http://zhidao.baidu.com/link?url=49EH5W3f2KKDqhcnuB2CtP3hN03KJMIpDVMUYHl564UiB9uix5l7zZ4KeX1i2hB8CGwnoHkbokNk2E-QBLpD5XSghr2pdTepFby6tgQXgjK
历史上存在的原理,以前都是使用hive来构建数据仓库,所以存在大量对hive所管理的数据查询的需求。而hive、shark、sparlSQL都可以进行hive的数据查询。shark是使用了hive的sql语法解析器和优化器,修改了执行器,使之物理执行过程是跑在spark上;而sparkSQL是使用了自身的语法解析器、优化器和执行器,同时sparkSQL还扩展了接口,不单单支持hive数据的查询,可以进行多种数据源的数据查询。