Spark SQL快速离线数据分析
1.Spark SQL概述
1)Spark SQL是Spark核心功能的一部分,是在2014年4月份Spark1.0版本时发布的。
2)Spark SQL可以直接运行SQL或者HiveQL语句
3)BI工具通过JDBC连接SparkSQL查询数据
4)Spark SQL支持Python、Scala、Java和R语言
5)Spark SQL不仅仅是SQL
6)Spark SQL远远比SQL要强大
7)Spark SQL处理数据架构
8)Spark SQL简介
Spark SQL is a Spark module for structured data processing
9)Spark SQL的愿景
a)Write less code
对不同的数据类型使用统一的接口来读写。
b)Read less data
提升大数据处理速度最有效的方法就是忽略无关的数据。
(1)使用列式存储(columnar formats),比如Parquet、ORC、RCFile
(2)使用分区裁剪(partitioningpruning),比如按天分区,按小时分区等
(3)利用数据文件中附带的统计信息进行剪枝:例如每段数据都带有最大值、最小值和NULL值等统计信息,当某一数据段肯定不包含查询条件的目标数据时,可以直接跳过这段数据。(例如字段age某段最大值为20,但查询条件是>50岁的人时,显然可以直接跳过这段)
(4)将查询源中的各种信息下推至数据源处,从而充分利用数据源自身的优化能力来完成剪枝、过滤条件下推等优化。
c)Let the optimizer do the hard work
Catalyst优化器对SQL语句进行优化,从而得到更有效的执行方案。即使我们在写SQL的时候没有考虑这些优化的细节,Catalyst也可以帮我们做到不错的优化结果。
2.Spark SQL服务架构
3.Spark SQL 与Hive集成(spark-shell)
1)需要配置的项目
a)将hive的配置文件hive-site.xml拷贝到spark conf目录,同时添加metastore的url配置(对应hive安装节点,我的为3节点)。
修改完后再发送给其他节点
b)拷贝hive中的mysql jar包到spark的jar目录下,再发送给其他节点
c)检查spark-env.sh 文件中的配置项,没有添加,有则跳过
2)启动服务
a)检查mysql是否启动
b)启动hive metastore服务
c)启动hive
本地kfk.txt文件
d)启动spark-shell
4.Spark SQL 与Hive集成(spark-sql)
启动spark-sql
5.Spark SQL之ThriftServer和beeline使用
通过使用beeline可以实现启动一个应用给多个用户同时操作,而不必要启动多个应用,这样更加节省资源。
1)启动ThriftServer
2)启动beeline
6.Spark SQL与MySQL集成
启动spark-shell
7.Spark SQL与HBase集成
Spark SQL与HBase集成,其核心就是Spark Sql通过hive外部表来获取HBase的表数据。
1)拷贝HBase的包和hive包到spark 的jars目录下
2)启动Hbase
3)启动Hive
4)启动spark-shell
这一步如果报NoClassDefFoundError错误请参考博文:Spark-HBase集成错误之 java.lang.NoClassDefFoundError: org/htrace/Trace
到这,Spark与HBase的集成就算成功了!
以上就是博主为大家介绍的这一板块的主要内容,这都是博主自己的学习过程,希望能给大家带来一定的指导作用,有用的还望大家点个支持,如果对你没用也望包涵,有错误烦请指出。如有期待可关注博主以第一时间获取更新哦,谢谢!同时也欢迎转载,但必须在博文明显位置标注原文地址,解释权归博主所有!