文章目录
Spark SQL使用场景
- 文件中数据的特殊查询(即席查询;即席查询是可以进行特殊的字段查询自定义的查询;普通查询就是别人已经定义好的查询方式)
- 实时SQL分析流数据
- 可以进行ETL操作
- 与外部数据库的交互
- 具有更大集群的可伸缩查询性能
Spark SQL 原理
求大于18岁的同学总成绩平均分
原理
SQL Parser
SQL Analyzer
- 经过Parser之后的LogicalPlan并不知道如何执行
- 需要绑定不确定的属性和关系
- 解析表名
- 临时表
- 临时view
- hive table
- hive view
- 解析具体的schema结构
- 字段类型
- 存储位置
SQL Optimizer
SQL Optimizer 谓词下推
SQL Optimizer 列值裁剪
SQL Planner
Spark SQL加载数据
- 直接将数据加载到一个DataFrame中
- 将数据加载到RDD并进行转换
- 可以从本地和云端加载数据
启动一个spark-shell
1) RDD DataFrame/Dataset
用本地spark的启动日志来进行测试
//将数据加载成RDD
val masterLog = sc.textFile("file:///home/hadoop/app/spark-2.1.0-bin-2.6.0-cdh5.7.0/logs/spark-hadoop-org.apache.spark.deploy.master.Master-1-hadoop001.out")
val workerLog = sc.textFile("file:///home/hadoop/app/spark-2.1.0-bin-2.6.0-cdh5.7.0/logs/spark-hadoop-org.apache.spark.deploy.worker.Worker-1-hadoop001.out&#