当前位置: 首页 > 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. 操作要点:明确不同连接方式的使用场景和操作要点,如拷贝相关配置文件、导入依赖等。
http://www.xdnf.cn/news/83449.html

相关文章:

  • Saliency Driven Perceptual Image Compression阅读
  • 如何解决消费者高频触发订单更新?
  • ProxySQL 的性能优化需结合实时监控数据与动态配置调整
  • pip install torchsummary报错
  • 5个Go接口常见错误及避免方法
  • 机器学习基础 - 分类模型之逻辑回归
  • 是否可以使用非被动 S4P 文件进行反嵌?
  • Redis—内存淘汰策略
  • Nginx:前后端分离配置(静态资源+反向代理)
  • AI算子开发是什么
  • CMake
  • 第48讲:空间大数据与智慧农业——时空大数据分析与农业物联网的融合实践
  • 数据库介绍
  • Eureka、LoadBalance和Nacos
  • 作为一个创业团队,Neo4j、Nebula Graph、HugeGraph‌、AllegroGraph‌等几款图数据库哪款更合适?
  • 【漫话机器学习系列】215.处理高度不平衡数据策略(Strategies For Highly Imbalanced Classes)
  • AI写代码之GO+Python写个爬虫系统
  • 基于 PaddleOCR对pdf文件中的文字提取
  • 深度学习4月22笔记
  • [翻译]从 unique 到 cleanups 和 weak:高效的新底层工具
  • 生产环境大数据平台权限管理
  • Neo4j 可观测性最佳实践
  • Vue指令详解:从入门到精通
  • BBR 的 minRTT 采集问题
  • 二叉树层序遍历技术解析与面试指南
  • 根据极点-零点分布进行状态空间模型降阶
  • 火山RTC 5 转推CDN 布局合成规则
  • 2024年ESWA SCI1区TOP:量子计算蜣螂算法QHDBO,深度解析+性能实测
  • 【简单学习】llamaindex环境搭建以及构建RAG
  • 真实趋势策略思路