当前位置: 首页 > news >正文

Spark-SQL(总结)

了解到Spark SQL是Spark用于结构化数据处理的模块,其前身是Shark。Shark基于Hive开发,但对Hive的依赖制约了Spark的发展。掌握了 Spark - SQL 的特点,如易整合、统一数据访问、兼容 Hive 以及支持标准数据连接,可处理多种数据源的数据。

对于编程方面,学会使用 SparkSession 作为 SQL 查询的入口,它封装了 SparkContext 并整合了 SQLContext 和 HiveContext 的功能。掌握了 DataFrame 的创建方式(从数据源、RDD 转换或 Hive Table 查询)、查询语法(SQL 和 DSL)以及与 RDD 的相互转换方法。了解了 DataSet 的创建和与 RDD、DataFrame 的转换,以及三者之间的区别和联系。学会编写自定义函数,包括 UDF 和 UDAF,以满足特定的数据处理需求。

对于数据处理与存储方面,掌握了通用的数据加载和保存方式,默认格式为 parquet,可通过spark.read.loaddf.write.save结合formatoption处理不同格式数据。熟悉了 Parquet、JSON、CSV、MySQL 等数据格式的加载与保存特点及操作方法。

对于与Hive集成方面,学习了 Spark SQL 连接 Hive 的多种方式,如内嵌 Hive、外部 Hive、Spark beeline、Spark - SQL CLI 以及代码操作。明确了不同连接方式的使用场景和操作要点,如拷贝配置文件、导入依赖等。

本次课程Spark-SQL 展开,学习到其概念、核心编程、数据加载与保存、数据处理及与Hive集成与 Hive 的连接等多方面内容,帮助学习者全面掌握Spark-SQL技术。

学习到许多的程序,像是SparkSession 创建、 DataFrame 操作、DataSet 操作、自定义函数、数据加载与保存、 连接 Hive、词频统计、城市出现次数最多的等等

一、Spark - SQL 基础认知

了解到 Spark - SQL 是 Spark 用于结构化数据处理的关键模块。由于 Shark 对 Hive 的依赖限制了发展,Spark - SQL 应运而生,具备易整合、统一数据访问、兼容 Hive、支持标准数据连接等特性,能处理多种数据源的数据。

二、核心编程抽象

  1. DataFrame
    • 掌握了其创建方式,可从 Spark 数据源、现有 RDD 或 Hive Table 构建。
    • 学会运用 SQL 语法和 DSL 语法进行查询操作。
    • 熟悉了 DataFrame 与 RDD 的相互转换,借助样例类能更便捷地实现转换。
  2. DataSet
    • 明确了 DataSet 是分布式数据集合,具有强类型的特点。
    • 学会使用样例类序列或基本类型序列创建 DataSet。
    • 掌握了 DataSet 与 RDD、DataFrame 之间的相互转换方法。
    • 对比了 RDD、DataFrame 和 DataSet 的异同,理解它们在使用场景上的差异。

三、自定义函数编写

  1. UDF(用户自定义函数):学会注册 UDF 并在 SQL 语句中运用,以满足特定的数据处理需求。
  2. UDAF(用户自定义聚合函数):了解在 Spark 3.0 前后不同的实现方式,掌握使用Aggregator实现强类型聚合函数,如计算平均工资等功能。

四、数据加载与保存

  1. 通用方式:掌握了通用的数据加载和保存方式,默认格式为 parquet,学会使用spark.read.loaddf.write.save,并结合formatoption等方法处理不同格式数据。
  2. 特定格式:熟悉了 Parquet、JSON、CSV、MySQL 等数据格式的加载与保存特点及操作方法。

五、与 Hive 连接

  1. 连接方式:学习了 Spark SQL 连接 Hive 的多种方式,包括内嵌 Hive、外部 Hive、Spark beeline、Spark - SQL CLI 以及代码操作。
  2. 操作要点:明确不同连接方式的使用场景和操作要点,如拷贝相关配置文件、导入依赖等。

相关文章:

  • 突破 RAG 检索瓶颈:Trae+MCP 构建高精度知识库检索系统实践
  • 1.微服务拆分与通信模式
  • EasyCVR视频智能分析平台助力智慧园区:全场景视频监控摄像头融合解决方案
  • 简单适配torch_npu不支持的ATen算子
  • 【MySQL】MySQL 表的增删改查(CRUD)—— 下篇(内含聚合查询、group by和having子句、联合查询、插入查询结果)
  • 人大金仓数据库删除自己创建表空间
  • mybatis实现增删改查1
  • 发布一个npm包,更新包,删除包
  • Web开发-JavaEE应用JNDI注入RMI服务LDAP服务DNS服务高版本限制绕过
  • Hadoop----高可用搭建
  • 【Redis】缓存三剑客问题实践(上)
  • Android JNI开发中头文件引入的常见问题与解决方案​,提示:file not found
  • 使用 LlamaIndex Workflows 与 Elasticsearch
  • Android 中实现图片翻转动画(卡片翻转效果)
  • Selenium 在爬取过程中,网络响应被退出的解决方案
  • C++算法(13):如何高效读取并存储未知数量的空格分隔数字
  • C语言高频面试题——sizeof和strlen的区别
  • 进程的同步和互斥
  • Seata 分布式事务 快速开始
  • Crawl4AI:打破数据孤岛,开启大语言模型的实时智能新时代
  • 我国首次实现地月距离尺度卫星激光测距
  • “养老规划师”实则售卖保险,媒体:多部门须合力整治乱象
  • 海上生明月,九天揽星河,2025年“中国航天日”主场活动在上海启动
  • 台媒称美派遣前军官出任“汉光演习”资深观察员,国防部回应
  • 美媒称特朗普考虑大幅下调对华关税、降幅或超一半,外交部回应
  • 云南洱源县4.8级地震:房屋受损442户,无人员伤亡报告