--- Spark学习(柒)- Spark SQL扩展和总结

本文深入探讨Spark SQL的使用场景,包括文件查询、实时流分析、ETL操作和数据库交互。详细阐述了其工作原理,如SQL解析、Analyzer、Optimizer和Planner。介绍了DataFrame与SQL的对比,强调DataFrame的Catalyst优化和schema处理。讨论了加载数据的方法,包括从RDD、本地和云端。此外,文章还涉及处理复杂JSON数据、SQL覆盖程度及外部数据源的连接。
摘要由CSDN通过智能技术生成

Spark SQL使用场景

  • 文件中数据的特殊查询(即席查询;即席查询是可以进行特殊的字段查询自定义的查询;普通查询就是别人已经定义好的查询方式)
  • 实时SQL分析流数据
  • 可以进行ETL操作
  • 与外部数据库的交互
  • 具有更大集群的可伸缩查询性能

Spark SQL 原理

在这里插入图片描述
求大于18岁的同学总成绩平均分

原理
在这里插入图片描述
SQL Parser
在这里插入图片描述

SQL Analyzer

  1. 经过Parser之后的LogicalPlan并不知道如何执行
  2. 需要绑定不确定的属性和关系
  • 解析表名
    • 临时表
    • 临时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&#
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值